Yaroslav Bibaev

Субъективный блог

17 Jun 2020

Отбивка в 79 символов и PEP8

Ни так давно у меня уже выходила заметка про форматирование кода, но в это раз хочется поговорить о максимальной длине строки кода, которая является одним из важных параметров в оформлении кода и не редко порождает споры вокруг себя. Для python есть рекомендация по оформлению и называется она PEP8 (Style Guide for Python Code), в которой есть пункт про максимальную длину кода (Maximum Line Length) и по этой рекомендации она должна быть не больше 79 символов.

Основной посыл, который указан в PEP8, в том, что когда длина ограничена 79 символами, то можно с легкостью сравнить две версии кода, если разделить редактор на две колонки по горизонтали. Да, это действительно удобно, но так же можно сравнивать и версии с большим количеством знаков в одной линии и это будет так же хорошо. Современные редакторы прекрасно с этим справятся, даже если так получилось, что вы обладатель монитора с низким расширением.

Так как python и читаемость кода тесно связаны, то можно предположить, что ограничение в 79 символов повышает читаемость. Несомненно, когда есть такого рода ограничения, то становится нереальным поместить много кода в одну линию. Поэтому приходится разбивать код на смысловые блоки и больше использовать переменные, тем самым повышая читаемость. Но часто бывает так, что приходится использовать пространство имён для сохранения контекста. Функция с красивым и лаконичным именем print превращается в namespace.print и вот тут уже начинаются проблемы. Разработчики, чтобы впихнуть невпихиваемое, начинают идти на хитрости и использовать символ разрыва строки \, из-за чего глазки становятся мокрыми и из них начинают течь слёзки. Либо начинают злоупотреблять переносами, повышая плотность текста на ровном месте, что увеличивает когнитивную нагрузку при чтении кода.

В PyCharm (профессиональная среда для разработки для python) стоит по умолчанию отбивка в 120 символов. Я не знаю, честно говоря, почему именно такое количество символов. Возможно из-за того, что среда разработки основана на IntelliJ IDEA (то же самое, только для Java), а в Java, как известно, любят использовать длинные наименования, которые точно не поместятся в 79 символов =) Во всяком случае, это выглядит современной альтернативой рекомендации из PEP8.

Большую часть своего рабочего времени я трачу на чтение кода. Оказалось, что код с отбивкой в 120 символов мне читать намного проще, чем код с отбивкой в 79. По моим ощущениям это связано с меньшим числом злоупотребления переносами и символами разрыва строки. Конечно, 120 символов не панацея и этого количества точно не хватит всем, но кажется, что сейчас 120 символов в среднем лучше, чем старые добрые 79. Кстати, не так давно, Линус Торвальдс высказал своё отношение к ограничению в 80 символов. Интересно наблюдать, как меняется мир =)