Правила хорошего кода Python


Правила хорошего кода Python

Типичные ошибки при написании кода Python и варианты их решения.

 

Ошибка 1.  Разные отсупы: TAB и пробел.

 

В языке Python отступ слева - это часть синтаксиса кода программы, а не способ выделения  смысловых  блоков программы.

 

Как выглядят ошибки:

  • Неправильно отступают отступы - поэтому код вообще не работает, интерпретатор выдает ошибку.
  • Отступы содержат неодинаковое количество пробелов: в одной строке - два пробела, в другой – четыре, в третьей- шесть.
  • Используют разные клавиши, чтобы указать отступы: в одной строке – нажимают клавишу «TAB», в другой - пробелs. Python сообщает об ошибке из-за сочетания пробелов и табуляций. Чаще всего такое происходит в Linux/Unix/FreeBSD

 

Решение ситуации:

  • Заведите правило отступ делать четырьмя нажатиями клавиши «пробел».
  • Среды разработки (IDE, например Jupiter или PyCharm), упрощает работу программиста. Нажав клавишу «TAB» вы производится отступ в четыре пробела.
  • Для языка Python разработан официальный документ PEP 8, в котором прописаны правила красивого кода.

 

Ошибка 2. Непонятные переменные

 

Код  основной программы и код всех модулей должен быть читаемым. Суть должна быть понятна  без объяснений разработчика. Используйте для всех переменных, методов, функций понятные значащие имена, которые сделают их назначение понятными без комментариев.

 

Как выглядят ошибки:

  • Обычная практика новичков использовать переменные из одной буквы: a, b, c, d, e,f - не задумываясь о том кто будет чиать код программы.
  • Использование в коде  для имени переменной одной буквой, меняя только цифры: i1, i2, i3 и так далее. Если переменных 10, то дойдет до  i Держать в голове назначение таких переменных так же сложно как и переменных из одной буквы.
  • В качестве переменной используют строчную переменную l (L) или заглавную букву I (i). Эти буквы легко спутать с единицей, как и букву O можно спутать с 0 (нулем). И это не только если код написан в Python но и на других языках.

 

  • Используют транслит вместо названий по английски. Например, называют переменную spisok вместо list. Отдельно нужно упомянуть ситуации когда в коде программы смесь названий переменных из транслита и названий по английски.
  • Составные переменные называют c большой буквы например FirstName.
  • Константы пишут маленькими буквами например constanta.
  • В случае нескольких переменных для одного обьекта именуют начиная со свойства, например age_man, name_man, location_man.
  • Не используют общепринятые переменные. То есть придумывают переменные вместо общепринятых: для названия цикла (в цикле принято использовать переменные i, j, k , l, m, n— именно в таком порядке, от внешнего i до вложенного n), для обозначения осей координат (x, y, z).

 

Решение ситуации:

  • Переменная сама должна показать, что она хранит. Например, имя хранить в переменной name,  возраст – в переменной age. В идеальном коде назначение переменных понятны и легко читаются.
  • Имя переменной, состоящее из нескольких слов, именуйте через нижнее подчёркивание маленькими буквами: имя человека man_name.
  • Если именуете класс, записывайте каждое слово с заглавной буквы: «имя_переменной» должно отличаться от «ИмениКласса» (чтобы даже по наименованию было понятно).
  • Константы пишутся БОЛЬШИМИ буквами, например CONSTANTA.
  • В случае нескольких переменных для одного обьекта именуйте начиная с обьекта, например man_age, man_name, man_location.

 

Ошибка 3. Пустые строки отсутствуют или в избытке

 

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

 

 

Как выглядят ошибки:

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

 

Решение ситуации:

  • Код программы принято делить на логические блоки и это на любом языке программирования. Например, при запросе информации о человеке, пишут необходимые строки кода и оставляют одну пустую после блока команд. Далее, например, идёт блок формальной проверки полученных значений. Если он содержит несколько строк то их тоже логично будет отделить пустой строкой от следующего блока. Перед блоком вывода/сохранения информации также добавляют пустую строку.
  • В коде на Python рекомендуется каждую строку делать длиной 80 символов, в самом крайнем случае 100 символов. Длинные строки рекомендуется переносить в несколько строк для улучшения читаемости.

 

Ошибка 4. Слишком сжатый код

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

 

Как выглядят ошибки:

  • Код программы занимает минимальное количество строк, для этого помещают несколько операторов в одну строку.

 

Решение ситуации:

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

 

Ошибка 5. Использование одинаковых наименований функций/процедур/переменных/классов/модулей и т.д.

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

 

Как выглядят ошибки:

  • Например в модуле main есть функция index с переменными a1 a2 a3 и есть модуль letter с функцией index и переменными a1 a2 a3.

 

Решение ситуации:

  • Ведите планирование работы. Проверяйте ваш проект собирая код всех модулей в один файл и добиваясь корректной работы проекта.

 

Ошибка 6. Использование одинаковых наименований шаблонов.

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

 

Как выглядят ошибки:

  • Например для модуля contacts есть папка contacts  и шаблон index и есть модуль letter с папкой letter  и шаблном index . Технически все будет работать корректно, но опыт показывает, что одинаковые имена файлов приводят к ошибкам разработчика.

 

Решение ситуации:

  • Ведите планирование работы. Проверяйте ваш проект собирая все шаблоны в одну папку и добиваясь корректной работы проекта.