@@user-to1or9cv5n значит у вас препод сам ещё зелёный раз проповедует такое. И сам не знает как правильно и вас не научил как нужно. Либо просто понимал что вы потенциальный конкурент в будущем.
@@santa000зачем улутшают коды? Для того чтобы лутше работало и быстрее . +Читабельность и другие люди которые возможно будут редактировать или улутшать чтобы легче могли понимать что в коде , а также если ты захочеш в будущем улутшить или чтото добавить то меньше нужно будет переписывать , если сейчас усовершенствовать
@@user-uh3hv7zv4hправо имеет, только разбираться в таком коде будет намного менее удобно чем в коде где переменные названы нормально и отражают то что они из себя представляют
@@archibaldo Смотря какой язык. В Java и C# например на это будет глубоко плевать компилятору. А вот в Python интерпретатор не поймет, какого хрена после того же условия у тебя табуляция отсутствует.
@@OlegVolgin В том что лезет в чужое болото, доколупатся можно до любого кода. Как говорится, - чужую соринку увидел , а бревно в своем глазу не замечает. Выглядит как закомплексованный школьник решивший поднять свое самомнение ,тыкнув носом в чужок код.
@@OlegVolgin в видео единственное что можно подтянуть к чистоте кода - расположение полей класса. Все остальное либо правится утилитами, либо вполне может укладываться в принятый код стайл. Так что делать выводы про какую то чистоту кода здесь нельзя.
@@neitralov739 класс по логике должен отвечать за текущие статы игрока, но кроме этого ещё и выводит информацию о левле "наружу". То есть он должен был бы иметь метод getLevel(), но не изменять сам гуй. Это не его ответственность.
@@films_editsu, не украинцы начали в 14м году орать москалей на ножи? Не украинцы ввели войска против своего народа на Донбасс? Не украинцы сожгли людей в доме профсоюзов в 14м году? Не украинцы сносили памятники Советскому Солдату? Не украинцы провозгласили нацистского преступника бандеру национальным героем? Не украинцы отказались выполнять собственноручно подписанные соглашения? Украина просила войны - Украина получила войну.
Чел просто не знает о существовании code style templates, которые просто нужно настроить на своё усмотрение дрочева и не выкладывать такие тупые разборы 😆
Согласен. При этом хочу сказать, что "maxLife" - да, вполне понятно, хотя в идеале бы переменную назвать "maxHpNumber" или "maxHpCount". А учитывая, что тут вообще публичные поля (что страшно), поле нужно было бы сделать приватным и внести правки в название. По итогу мы бы получили "_maxHpNumber". Но я не об этом) Я хотел сказать, что существуют общепринятные сокращения по типу "max", "min", "app", "config", "async", "id", "auth", "db" и т.п., которые, я считаю, вполне можно юзать в названиях. При этом есть такие, которые не относятся к этой категории по типу "mgmt" (management), "svc" (service) или как у него "cur" (current). Чаще всего такие сокращеня похожи на наскальную живопись, поэтому и воспринимаются сложно. Но да, я с тобой согласен в том плане, что полезнее было бы разбирать ЛОГИКУ и использованные механизмы для достижения определенной цели, а не "ляля, тут нет пробела". (со всем уважением к Роме (но уж частенько ты грешишь таким :) )) При этом я очень уважаю подход Ромы к чистоте в коде. Без этого в коде разбираться было бы очень больно.
@@rumrunner0 пару тупых и не очень вопросов. Что плохого иметь несколько полей публичными, если ты не собираешься создавать их дубликаты? (private var1 / public var1). И почему все постоянно используют _? Как по мне это максимально непонятный способ маркирования переменных. Я искал много разных объяснений, но все свелось к тому, что "каждый делает это для своего удобства, по своим разным причинам". И также с именованием "поле" и "переменная", каждый понимает их по своему и Гугл не даёт внятных результатов
@@holesmak окей, давай попробуем разобраться) 1. Что касается публичных полей. Публичных (а если точнее каких-либо, кроме private) полей в принципе в своей природе существовать не должно. Объясню это тем, что, имея такие поля, доступ к объекту становится неконтролируемым. Ты никаким образом не можешь "контролировать" состояние своего объекта. Контролировать - в смысле держать под контролем его состояние (а поля и являются состоянием объекта). Любой доступ к объекту извне должен осуществляться с возможностью контроля его состояния (валидации, проверки на логику и т.п. данных, которые получены извне, исключения случаев неправильного изменения состояния). По этой причине и появились "геттеры" и "сеттеры", то есть методы, через которые осуществляется доступ к состоянию объекта. (В C# есть свойства, но это просто сахар, который скрывает под собой всё те же геттеры и сеттеры). Кстати говоря, это всё равно неправильно, хотя тут и существует контроль. Смысл инкапсуляции зарыт глубже. Грубо говоря, чтобы изменить состояние объекта, нужно иметь метод, который спровоцирует это изменение. Пример на котах: если кот голодный, это значит, что его нужно накормить, а не изменить состояние его голода на +10. Неправильно: cat._satietyPoints = 10; Неправильно: cat.SetSatietyPoints(10); Правильно: сat.Eat(deliciousCatsFeed); (внутри метода Eat() меняется состояние сытости).
@@holesmak 2. Не знаю историю андерскора (нижнего подчеркивания), но, по сути, это просто негласное соглашение (а может и гласное) программистов об именовании приватных полей. Так легче визуально отделять приватное состояние от других использующихся в коде сущностей. Так же это использовалось для избежания конфликтов (или совпадений) между именами полей и параметров. Например, в конструкторе класса часто можно заметить, что имена параметров совпадают с именами полей класса. После добавления ключевого слова `this`, эта проблема была решена, т.к. теперь можно было четко разделять поля и параметры, добавляя к полям `this`. Во многих code guidelines можно заметить, что приватные поля рекомендовано называть с `_`. Это то наименование, которое проверено годами и всем знакомо.
@@holesmak 3. С понятиями "переменная" и "поле" всё очень просто, хотя и правда существует много непонятных вбросов. Как таковой просто переменной не существует. То, что называют переменной, на самом деле называется "локальная переменная". Переменные могут быть локальные или глобальные. В С# глобальных переменных не существует, есть только локальные. Локальные переменные могут быть созданы только в локальных областях (в методе, в условии, в цикле или же просто во вложенной локальной области и т.п. - во всём, что имеет функциональный контекст (там, где можно писать инструкции)). Поле - это сущность, которая может быть объявлена только в контексте класса. Поле служит хранилищем состояния экземпляра класса. Возможной причиной, из-за которой возникает недопонимание, является сама суть этих обеих сущностей: они обе предназначены для хранения данных и устроены похожим образом. Из-за того, что многие начинают учить программирование внутри метода Main(), для них базовая сущность это локальная переменная. Позже, когда они доходят до ООП, им в туториалах говорят, что "Поле" это как переменная, только для класса. И это неправильно, потому что поле - это не локальная переменная. Они похожи только тем, что их цель это хранить данные, но на этом сходства заканчиваются.
@@Watozarato напомню что такой легендарный программист как Джон Кармак писал код высшего качества, напомню что есть общие стандарты читаемости, которые незначительно отличаются в разных студиях
Если такое код-ревью бывает в команде, то у нее большие проблемы с инструментами. Не должны разработчики заботиться о мелочах типа отступов, все это должна делать автоматика пре-коммит хуков
Я понимаю людей которые отступают строчки в коде.Мне вот не удобно смотреть на код и разбираться в нем, когда все строки кода вместе. А когда они разделены сразу все понятно.
Я могу простить неразбериху в полях, отсутствие новой строки между названием класса и юзингами, даже отсутствие модификатора доступа метода, хорошо, допустим ты тот самый человек для которого приват на дефолт придумали. Но непоследовательные фигурные скобки и отсутствие отступа внутри тела метода это... УУУУХ
@@vladimirleontiev8867 в некоторых случаях размещать их на одном уровне будет как раз против правил style guide'ов. убивает читабельность если кол-во аргументов слишком много/имена аргументов слишком большие
@@johnconstantine6331 Автор видео упрекает автора кода в том, что тот использует модификатор доступа "void" (выделяет красным прямоугольником на видео). По мнению автора видео, данный модификатор отражает не только некомпетентность автора кода, но и его сексуальную ориентацию. На мой взгляд человек, создавший концепцию работы этого модификатора доступа, не вкладывал такого значения в свое творение.
@@Red_Coder может он имел ввиду что не хватает модификатора доступа? Я конечно хз че это за язык, но в Java void означает что метод ничего не возвращает.
@@achillesofficial15 это язык Си, точно какой не могу сказать, но среда Visual Studio. Язык похож на С# или С++. Чел почему то придрался к методу void, хотя он нормальный...
Там в добавок все поля имеют модификатор доступа public. Лучше всегда использовать либо private, либо protected, а для отображения в редакторе юзать [serializefield]
Автор красавчик. Я бы ещё проверил, что все эти поля делают. Ни одного read-only, private или const, хотя некоторые явно напрашиваются. Есть явный запашёк таскания данных через них или полный full statused code, за такое убивают.
C# не изучал, но знаю Java core. void - это не модификатор доступа, а тип возвращаемых данных, он означает, что метод с void ничего не возвращает и обязательно должен быть указан, если метод ничего не возвращает. Модификатор доступа в данном случае default или уровень пакета, что вполне нормально, если разработчик не хочет показывать этот метод вне пакета. И в Java есть такая фишка, что protected это ещё и default - два в одном )))
а можешь выпустить ролик с советами как оформлять свой код Python, просто я только начинаю его изучать и будет лучше, если сразу начну писать читаемо, чем потом переучиваться
Модификаторы доступов зависит от код-стайла компании. У нас не принято использовать явные модификаторы доступа для дефолтных вариантов (private для переменных и функций, internal для классов и тд)
Поля не названы в разнобой, переверни их для себя вверх ногами и о чудо, они будут выстроены по логической цепочки. Тот кто это писал возможно просто любит смотреть на код снизу вверх
Выбери что тебе нравится. Главное помни язык программирования это Инструмент. То как ты пользуешься такова твоя программа. Не читай книги которым больше 2 лет.
какая разница как код выглядит, лол? люди в одну строку на перле вебсервисы пишут которые везде откроются, а ты тут за пропуск строки и названия переменных. a,b,c,d,e… - так обращаться быстрее и кода меньше. касательно старта пустого понятно.
А зачем проставлять модификаторы доступа, по умолчанию и так вроде везде стоит private? Я конечно их проставляю переменным, но непривычно это делать войдам(если надо то я ставлю public)