Блог

Идеальный код на Python

Разбор ошибок с деканом факультета GeekUniversity
4 минуты8136

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

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

У нас уже вышла публикация о том, как написать код для собеседования и получить работу. Мы пошли дальше и задали вопросы об идеальном коде декану Python-факультета GeekUniversity Алексею Петренко. Он рассказал, что в коде выдает джуниора.

Отступы: все разные

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

Что новички делают не так

  • Неправильно выставляют отступы — их код просто не работает.
  • Используют неодинаковое количество отступов: в одной функции — два пробела, в другой — все шесть.
  • Используют разные клавиши, чтобы создать отступ: в одной функции — клавишу табуляции, в другой — два пробела.

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

Решение

Хороший тон — делать отступ четырьмя нажатиями пробела.

Современные среды разработки — например, PyCharm — упрощают жизнь программиста. Нажав клавишу табуляции, автоматически получаете четыре пробела. Вуаля: код оформлен в общепризнанном стиле.

Для языка Python разработан официальный документ PEP-8, в котором прописаны правила красивого кода. Это соглашение всех программистов мира, которые пишут на Python, о том, какой код считать образцовым.

Переменные: непонятные

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

Что новички делают не так

  • Используют в качестве переменных обычные буквы алфавита: a, b, c, d, — не задумываясь о смысловой нагрузке.
  • Называют все переменные любимой буквой, добавляя цифры: а1, а2, а3. Если переменных двадцать, то будет и а20. Понять, какую информацию они хранят, очень сложно.
  • Используют строчную переменную l. Разработчики стараются избегать эту букву. Ее не принято использовать не только в Python, но и в других языках программирования, потому что при быстром чтении кода строчную l легко спутать с единицей. Аналогичная путаница возникает с O и 0.
  • Записывают переменные транслитом (massiv вместо array).
  • Придумывают новые переменные для общепринятых: для названия цикла (в цикле используют переменные i, j, k — именно в таком порядке, от внешнего i до вложенного k), для обозначения осей координат (x, y).

Решение

Очередное правило хорошего кода: каждая переменная должна говорить о том, что она хранит. Для записи информации о человеке логично создать переменную name. Для возраста — age. Заглядывайте в онлайн-словари, чтобы называть переменные правильными английскими словами, понятными большинству программистов в мире. Идеальная переменная понятна и легко читается:

  • Если название переменной состоит из нескольких слов, используйте в Python нижнее подчеркивание: переменная со значением максимального размера — max_size.
  • Если именуете класс, записывайте каждое слово с заглавной буквы: имя_переменной должно отличаться от ИмениКласса.

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

Из этого вытекает еще одна ошибка новичков: они называют переменные так же, как функции.

В Python есть около 70 функций «из коробки»: функция sum() вычисляет сумму всех переданных аргументов, max() ищет максимальное значение. Если программист назовет переменную sum, она будет работать. Но такой переменной он переопределит функцию суммирования — и она сломается.

Пустые строки: отсутствуют или в избытке

Как правило, код джуниора идет сплошным текстом: в каждой строке — очередная строка кода.

Что новички делают не так

  • Не разделяют строки кода пустыми строками.
  • Отделяют каждую строчку кода пустой строкой.

В обоих случаях код очень сложно прочитать.

Решение

Код принято делить на логические блоки.

К примеру, если запрашивают информацию о пользователе, пишут несколько строк кода и оставляют одну пустую после блока.

Далее идет блок обработки информации. Если он содержит несколько подблоков, их тоже следует отделить пустой строкой.

Перед выводом информации в конце также добавляют пустую строку.

Слишком сжатый код

Что новички делают не так

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

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

Решение

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

Советы декана начинающим разработчикам

  1. Ваш код будут читать другие программисты. Всегда думайте о том, как они его воспримут, насколько он будет понятен коллегам.
  2. Потратьте время на изучение синтаксиса, почитайте стандарты PEP8. Есть англоязычная версия и перевод. Работодатель будет встречать «по одежке»: ваш код должен выглядеть красиво.
  3. Если Python — не первый для вас язык программирования, повторяйте требования стиля. Когда разработчик пишет, не соблюдая их, возникает путаница: то ли перед нами человек, у которого в голове перемешались все языки программирования, то ли новичок, который вообще ничего не знает о Python.
  4. Воспользуйтесь командой import this. Это пасхалка от разработчиков: она выводит свод правил хорошего кода. Почаще перечитывайте этот Дзен Python — и ваш код будет идеален.

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

geekuniversitygeek universitypythongu
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup