Линтеры и правила оформления кода
Любой код должен быть оформлен по установленным правилам, ведь работать с ним придётся не только вам, но и вашим коллегам.
Даже
код, написанный для себя, лучше оформлять как следует: в какой-то
момент вы обязательно захотите показать его кому-то ещё — и попадёте в
неловкую ситуацию: «А ты точно разработчик?».
В Python принят стандарт оформления кода PEP8, он применяется и в учебных работах Яндекс.Практикума.
Оформляйте код правильно
Без соблюдений этих правил, проект не будет принят.
Основные правила PEP8:
- Длина строки — не более 79 символов.
- Отступы — 4 пробела.
- Стили имён должны соответствовать PEP8: Naming Conventions.
- Переносы строк делаются с правильными отступами.
- Бэкслеши
\
для переносов не применяются. - В коде нет неиспользуемых импортов.
- Импорты отсортированы в таком порядке:
- импорты стандартной библиотеки,
- импорты сторонних библиотек,
- импорты модулей текущего проекта.
- Функции верхнего уровня (не вложенные) и определения классов отделены друг от друга двумя пустыми строчками.
- Определения методов внутри класса отделены одной пустой строкой.
- В проекте использован одинаковый стиль кавычек: или везде одинарные, в которые вложены двойные(предпочтительно), или везде двойные, в которые вложены одинарные.
Более полный список правил есть в шпаргалке, она вам обязательно пригодится. Скачайте и держите под рукой.
Для отслеживания правил оформления кода есть специальные программы: линтеры. Изначально linter (или lint remover) — это ролик для чистки одежды, вот такая штука:
Всё изменилось в 1979 году, когда вышла программа
lint для статического анализа кода на языке C. Она предупреждала
разработчика об использовании непортабельных на другие архитектуры
языковых конструкций.
Сейчас линтерами
принято называть любые статические анализаторы, которые помогают
находить распространённые ошибки и дают рекомендации по улучшению кода.
Как включить нужный линтер в VS Code
Когда в VSC вы открываете файл с расширением .py,
в правом нижнем углу интерфейса появляется всплывающее окно с
предложением инсталлировать рекомендуемые расширения для Python.
Установите их, там много полезного. В этом пакете будут и линтеры.
Если
вы случайно закрыли это окошко — не беда, этот набор расширений
доступен в разделе «Рекомендуемые» в панели маркетплейса VSC (она
открывается с помощью горячих клавиш Ctrl+Shift+X).
Выбрать и активировать нужный линтер можно с помощью командной строки VSC (Command Palette, вызывается через Ctrl+Shift+P).
Введите в командную строку Python: Select Linter и нажмите Enter.
Возможно, в вашем редакторе уже включён какой-нибудь линтер. Или нет.
Выберите в списке flake8, именно его мы рекомендуем установить на время обучения.
flake8 — это утилита, объединяющая в себе несколько анализаторов кода (pycodestyle, pyflakes и mccabe). Сейчас это самый популярный линтер для Python.
После включения flake8 панель будет выглядеть так:
В нижней части интерфейса может появиться окошко с предложением установить линтер. Соглашайтесь.
После этого линтер должен заработать.
package installer for Python
Иногда
не получается включить нужный линтер через графический интерфейс VSC
(могут, например, возникнуть проблемы с правами доступа). В таком случае
придётся действовать через консоль.
Модули и пакеты для Python устанавливают посредством специальной программы, менеджера пакетов. Для Python написано много разных менеджеров, но пока ещё ни один не стал более популярен, чем pip, package installer for Python.
У вас установлен Python 3.7, pip был автоматически установлен вместе с ним.
Установите
flake8
с помощью pip. Выполните в консоли команду:Скопировать кодBASH# В macOS или Linux:
$ sudo pip3 install flake8
или
Скопировать кодBASH# В Windows, в командной строке с правами администратора:
$ pip3 install flake8
Если что-то пошло не так — почитайте документацию VSC в части подключения линтеров, скорее всего, вы найдёте там решение проблем.
Проверьте, выполнена ли установка: запросите через консоль данные о программе flake8:
Скопировать кодBASH$ flake8 --version
Если всё в порядке — вы увидите в консоли примерно такой ответ:
Скопировать кодPYTHON$ flake8 --version
3.8.4 (mccabe: 0.6.1, pycodestyle: 2.6.0, pyflakes: 2.2.0) CPython 3.8.5 on Linux
Линтер немедленно сообщит вам о проблемах в файле: даст описание ошибок в закладке Problems
и подчеркнёт проблемные места прямо в коде:
Одно из преимуществ
flake8
— это большое количество дополнений, которые можно к нему подключить; они помогут избежать ошибок при оформлении кода.Дополнения устанавливаются из консоли через pip, точно так же, как flake8:
Скопировать кодBASH$ sudo pip3 install имя_пакета # Linux/MacOS
# или
$ pip3 install имя_пакета # Windows
Мы рекомендуем установить следующие дополнения:
- pep8-naming — проверяет имена классов, функций и переменных на соответствие PEP8;
- flake8-broken-line отслеживает применение устаревших переносов (через обратный слеш
\
); - flake8-return проверяет значения, возвращаемые функциями;
- flake8-isort проверяет правильность порядка импортов.