От автора

Привет, коллеги, ваша заинтересованность публикацией о плагинах и горячих клавишах Pycharm вдохновила и подтолкнула меня к выпуску сборника правил по созданию чистого и красивого кода.

Нетрудно догадаться что перед вами первая часть этого сборника. Тут рассмотрим правильное создание имён переменных, функций, классов. Что нужно учитывать при создании хорошего имени. Приступим.

Введение

В жизни мы часто встречаемся с именами. К любой предмет имеет своё имя, уникальное имя, по которому люди понимают о чем они говорят, что это такое.

В программировании всё абсолютно схожее, за исключением того, что тут имена приходится создавать самому. Мы дарим жизнь именам переменных, классам, атрибутам и методам, именам исходных файлов и каталогов. Но для того чтобы жизнь этих переменных была долгой и счастливой, мы должны приложить немало усилий и выполнить эту работу хорошо. Создать хорошее имя!

Как создать хорошее имя?

Хорошее имя — залог долговечности и понимания. Имя должно говорить о том, что хочет сделать разработчик. Это нелегко, поэтому к выбору имени нужно относиться серьезно, не боясь потратить драгоценное время.

1.Имя должно давать ответы на все главные вопросы.

Почему этот объект существует? Что он делает? Что возвращает? Как используется? Если для полного понимания объекта не хватает пары строк комментариев, значит надо сменить или отредактировать его имя.

Например: b = 45. Имя b передаёт словно ничего. Оно не позволяет понять что это. Нет никакой ассоциации. Это может быть расстоянием, временем, скоростью, массой. Не понятно.Но стоить имя b заменить словом speed, как все лишние вопросы отпадают. Имена обязаны делать код очевидным, открытым для понимания, простым для изучения.

2.Имя не должно сопутствовать ложным ассоциациям.

Не стоит применять сокращения или имена понятные только вам. Избегайте имен с минимальными различиями между собой. Когда ваш код разрастется, различия в пару букв перестанут отличаться.

Опасные шутки могут возникать при использовании строчной l и прописной O. Шутка заключается в том, что строчная l во многих шрифтах очень напоминает единицу. Я бы сказал их не различить. А прописная O — это настоящий нуль.

Взгляните:

a = l
if O == l:
    a = 01
else:
    l = O1

Если вам кажется что это моя шутка, то я спешу вас расстроить. Я не один раз видел код, где из-за таких ситуаций образовывались ошибки уровня Critical для проекта.

3.Простота произношения — залог успешной команды.

Для общения друг с другом, люди используют слова. Чем проще произнести слово, тем быстрее строиться диалог и проще воспринимается.
Поэтому, если вы захотели назвать переменную первыми буквами вашей любимой цитаты, то бросьте это дело. Программирование это не ваше, или же пожалейте тех кто будет читать ваш код.

4.Избегайте имен, которые потом никогда не найдете.

Достаточно сложен для первого понимания заголовок этого правила и одновременно очень прост. Смотрите. Вы устроились в компанию N на совершенно новый проект. т. е. начинаете его писать с нуля. Проходит год, проект вышел в продакшен, клиентов навалом, доход растет. Тут директора осенило  и он понял, что если изменить алгоритм бизнес логики проекта, то доход вырастет в семь раз. Так как вы создавали данный проект, вы же и идете вносить в него правки. Открываете поиск и ищете переменную, которая отвечает за доход. В ответ получаете некоторое количества переменных, методов, классов, которыми вы успешно пользовались при создании первого релиза. Как понять что к чему относится? Только пробегать по каждому найденному результату и разбираться за что он отвечает.

Поэтому, чтобы не было таких ситуаций, рекомендую обращать внимание на то, что если переменная, метод, класс, могут встречаться в нескольких модулях проекта, то потратить время и придумать им более чем уникальные имена.

Для примера давайте сравним, где проще читать и искать переменные:

for i in range(n, k):
    if i ==s:
         s = (count_tasks[i] * 8) / 2

или

quantity_day = 7
total_sum = 50
quantity_hours = 8
peapls = 2
for i in range(quantity_day + 1):
    if i == total_sum:
        total_sum = (count_tasks[i] * quantity_hours) / peapls
                        

Выбор за вами!

5. Классы, методы и их наименования.

Логично что классы в своих именах содержат существительные и их словосочетания: User, UserPage. Соответственно, методы именуются глаголами и их словосочетаниями: create_user, get_user.

Старайтесь использовать одну концепцию для приближенных методов разных классов. Например:

class User:
    def get_user…

    def create_user…

    def delete_user…
class Customer:
    def get_customer…

    def create_customer…

    def delete_customer…

Выберите одно слово для одной концепции и используйте его в своем коде. Создайте однообразие своего кода.

class User:
     
    def del_user…
class Customer:

    def delete_user…

Не рекомендуется создавать в разных классах совершенно отличающиеся методы: delete_user и delete_customer лучше чем delete_user и del_customer.

6.Используйте имена из знакомой области своих коллег.

Ваш код обязательно будут читать другие разработчики. Поэтому применяйте общую терминологию из области программирования. Не надо заставлять коллег обращаться к вам с каждым новым именем из вашего проекта. Сжальтесь на своими нервами и своих коллег.

Заключение. Да, выбор правильного имени, дело не простое. Я сам, как и многие другие программисты так и не научились выбирать хорошие имена.

Благо современные инструменты сильно помогают нам следить за многими мелочами. Нам остается лишь контролировать то, чтобы наш код читался интересный английский детектив.

Используйте правила выше и вы удивите, в первую очередь себя. Используйте плагины и горячие клавиши вашей среды разработки и удивляйтесь скорости написания качественного кода.

Хотите попрактиковаться в написании кода, обращайтесь к нам в EasyPy или к нашим партнерам в Happy Python . Мы найдем вам интересные задания, и пройдем путь вместе с вами.

Подпишитесь на рассылку

Если это было вам полезно — вы можете сказать нам спасибо!