Привет, ребята,
Недавно я начал читать чистый код Роберта С. Мартином. Пока что это отличная книга, и каждый программист должен прочитать его хотя бы один или по крайней мере, начиная несколько глав, как в этих главах, автор пытается выделить очень базовые и фундаментальные методы кодирования, которые не должны игнорироваться в любое время.
В этом посте я постараюсь обобщить вторую главу книги в своих словах и попытаюсь сохранить вещи максимально простыми. Итак, начнем:)
«Имян» – это очень важный шаг любого процесса. Мы полагаем много мысли в названии наших детей, потому что мы понимаем его важность. Но когда мы делаем то же самое для нашего кода, у нас нет достаточно времени для этого. Мы либо думаем, что мы уже знаем лучшие практики именования, или мы просто не думаем, что это стоит нашего времени. Плохие имена переменных могут показаться в порядке в начале, но когда кодовая база становится все больше, со многими более разработчиками, работающими над ним, просто настолько трудно управлять и координировать наши усилия. Наш код – наше создание, поэтому мы должны назвать его должным образом по крайней мере.
Намерение переменной должно быть понятно от его имени.
- Если вам нужно написать комментарий, чтобы сделать целью переменной очистить, переосмыслить имя.
- В старые времена у нас были меньшие (очень меньшие) бараны, и, таким образом, пришлось очень тщательно подумать, давая переменные большие имена. Но это не проблема сейчас, это? Тогда зачем давать переменные расплывные имена, такие как
А
,N1
и Т. Д.
Рассмотрим этот кусок кода
getData(plist): ep = [] // expired person accounts for p in plist: if p.expiry_date >= datetime.now() ep.push(p) return ep
и сравнить с
get_expired_persons_list(persons_list): expired_persons_list = [] for person in persons_list: if person.expiry_date >= datetime.now() expired_persons_list.push(person) return expired_persons_list
Не используйте имена переменных, которые могут ошибочными разработчиками.
- Пример будет назвать коллекцию
Человек
Объектыrooms_list
Когда это не на самом делеСписок
Отказ Это имя может заставлять других разработчиков, чтобы думать, что этоСписок
Тип объекта. Поэтому называя этолюди_collection
будет лучшим выбором.
Переменные имена должны быть значимыми отчетливыми
- Мы часто склонны к имениям переменных таким образом, чтобы мы могли только избавиться от ошибок компилятора из-за того же имена переменной. Пример будет называть переменные
Персоната
иPersontata2.
. В этом примере целью переменных не ясна. - Точно так же, если вы написали
Человек
Класс с методами, какget_person ()
,get_person_info ()
Другие разработчики нелегко вызвало правильный метод желаемой цели. Разработчик может легко запутаться в функциональности любого из этих методов.
Переменные имена должны быть произношены.
- Наш мозг может легко запомнить имена переменных, если они будут произношены, и мы можем избежать ненужного хлопота поиска имени переменной в предыдущем коде, чтобы повторно использовать его. Пример будет использовать такие имена:
class Person(object): ... get_age_year_month_days() get_last_modified_year_month_days() ...
вместо
class Model01(object): ... get_ageiymd() // get age in year, month, days get_lmdiymd() // get last modified in year, month, days ...
Доступные переменные и константы доступны.
- Предположим, у вас есть рабочий проект. Существует требование для каждого пользователя не менее 18 лет. Вы реализовали это следующим образом:
def create_person(data): if data['age']['year'] < 18: return None
- Точно так же вы использовали этот номер
18
В других местах, где это было необходимо никак.
Теперь требование изменяется, и пользователь должен составлять не менее 15 лет для создания учетной записи. Что бы вы сделали сейчас? Поиск каждого вхождения номера 18
И решить, является ли это число, используемое для нашей цели, а затем изменить его везде.
Или вы могли бы просто использовали постоянную Min_age_req = 18
или Minmice_age_requirement = 18
(Что является более значимым и доступным для поиска). Тогда вам придется просто изменить значение этой постоянной, чтобы удовлетворить новое требование.
Имена классов всегда должны быть существительными.
- Имена классов и объектов всегда должны быть существительными, как
Человек
,Автомобиль
,Запись
и так далее. Избегайте общих и языковых технических названий, таких какИнформация
,Управляющий делами
иКонтроллер
Отказ
Имена методов должны иметь глагол
- Имена методов должны иметь имена глагол или глагол фрейб (желательно в начале), как
Получить
СУстановить
иУдалить
Отказ
Решите стандарт для именей, обслуживающих аналогичные цели.
- Скажем, ваш проект имеет много занятий в этом со многими разработчиками, работающими над ними. Вы решили использовать следующую конвенцию для посетителей и получателей:
class PersonUpdateForm(object): ... get_age() set_age() ...
в то время как другой разработчик может делать такие вещи:
class UpdatePersonForm(object): ... retrive_age() update_age() ...
Это вызывает несоответствие в проекте и сложно искать желаемые объекты и методы. Решите заранее начать разработку, что с какими конвенциями вы собираетесь следовать, и каждый разработчик следит за тем.
Используйте контекст с именами переменной везде, где бы не нужен.
- Если у вас есть переменная с именем
Государство
внутри классаЧлена
Тогда ясно, чтоГосударство
принадлежит кMemberAddress
объект. Но за пределами класса, если переменнаяГосударство
Используется, то для других разработчиков может быть не ясно, что переменнаяГосударство
принадлежит к какому объекту. В этом сценарии используя имя переменной,member_address_state
будет более значимым.
Мы никогда не должны игнорировать важность практики именования, так как плохие имена переменных станут большим препятствием в будущих планах развития. Изменение кодовой базы в этот момент является ненужным накладным расходом, и его можно избежать в самом начале, следуя передовой практике.
Это все с моей стороны на данный момент. Я скоро напишу о более поздних главах книги.
Счастливое кодирование!
Оригинал: “https://dev.to/danialmalik/a-beginner-s-guide-to-clean-code-part1-naming-conventions-139l”