Использовать ли PEP8?!

Posted by Reason89 | Posted in

   В последнее время на многих тематических форумах и блогах посвященных Python стал замечать аббревиатуру pep8. Как выяснилось в последующем, это набор правил которому советуют придерживаться при написании кода к Python программам.
   Первоисточник естественно на английском, но на хабре это все дело есть в более читабельной форме на русском языке.
   Если так рассуждать, то такие кодексы обязательно должны быть. Благодаря ним код выглядит красивее и читабельнее. Но в PEP8, многие пункты противоречат написанию, к которому я привык изначально. Да, мои знания еще вполне слабоваты, мое оформление кода вообще никуда не годится, стоит лишь взглянуть на оформление мной функций и классов. Но в этом кодексе по-моему затронули слегка лишнее.
   Использование 4 пробелов в виде отступа, вместо привычного мне табулирования. Это я лишним отнюдь не считаю, как и запрет на смешанное использование пробелов и знаков табуляции. Но 4 раза клацать по пробелу куда напряжнее, когда есть кнопка TAB. Правда я сам не раз сталкивался с тем, что интерпретатор не всегда понимает табуляцию в некоторых редакторах.
   Оставлять пустые строки между различными участками кода, которые отвечают за различные вещи, всегда было удобно, но какая разница в том, что между функциями мы должны оставлять одну пустую строку, а между классами две, не совсем понятно.
   Комментарии должны быть только на английском языке. Ну кто б сомневался, что они это впишут. Я вообще противник таких вещей. Если код я пишу для себя, то и комментировать я буду на понятном мне языке. К этому же и ведет то, что кодировка файлов должна быть Latin-1,  как писал я в utf-8, так дальше писать и буду. Если писать в Latin-1, то о комментариях на русском не может быть и речи.
   Записывать импортируемые модули, каждый раз на новой строчке. Выглядит конечно красивее и нагляднее, но у меня откуда то взялась привычка записывать все в одну строчку. При написании большой программы в одну строчку все импортируемые модули уже не запишешь. Хотя в всегда желательнее импортировать только те имена, которые нам необходимы, это как никак увеличивает быстродействие.
   Многие жалуются на ограничение в 80 символов, но меня и самого напрягают длинные строки в программировании. Для разделения длинных строк в Python есть слэш("/"), а функций которым нужно передавать параметры в 80 символов я еще не встречал.
   Но, что мне больше всего понравилось, так это просьба не использовать имён из одиночных l, O, I. Видя их в коде никогда не поймешь что это за символ, то ли L,I,0,O и.т.д.
   Так же стоит упомянуть одноименную утилиту, которая проверяет ваш код на соответствие PEP8. Еще бы она сама его подгоняла по всем правилам, было бы вообще замечательно. Есть версия только под никсы, под windows подобного никто писать не хочет.
   Ну и одноименный сайт "Сообщество python-разработчиков", на который я наткнулся проверяя статистику своего блога и затем уже увидел свой блог, в списке «Блоги о программирование на Python». За какие заслуги я туда попал, не понятно.



Comments (7)

    Нормальные редакторы по таб вставляют сколько надо пробелов.

    1. Табы заменять на n-он количество пробелов умеют не только "нормальные", даже самые "мелкие" и "ничтожные" редакторы :)

    2. Насчет английских комментариев: это касается исходного кода, над которым будут работать интернациональные команды, естественно в этом случае такое требование критическое.

    3. Стандарт уже довольно древний, сейчас в Python 3 можно даже классы и функции хоть иероглифами китайскими называть, никто не запрещает; да и исходники принудительно принимаются в utf-8.

    4. Насчет утилиты pep8 - есть замечательный PyLint, который можно прикрепить к IDE. У меня Aptana все сама прекрасно подгоняет под стандарт, а там, где не подгоняет - предупреждает.

    5. lorien, который ведет pep8, мониторит рунет на предмет питонистов и вручную добавляет блоги в фиды :)

    > За какие заслуги я туда попал, не понятно.

    Я исследую русскоязычную блогосферу и добавляю блоги, в которых замечаю публикации о языке python. Отбор тематических публикаций из общего потока публикаций происходит автоматически.

    Я не помню каким редактором пользовался, но помню что сидел потом везде табуляцию перебивал пробелами. Помню лишь, что сидел под Ubuntu.
    Про PyLint впервые слышу. Как нибудь обязательно посмотрю, что там к чему.

    Сообществу, отдельное спасибо =)

    1. есть куча редакторов, которые умеют и пробелы вставлять вмесот табов, и автоматом табы заменять на пробелы, и просто менять поиск-и-заменой ... (у меня vim:)
    2. pylint оставляет ощущение давно не развивающейся софтинки. из плюсов - можно гибко настроить его ограничения. из минусов - надо извращаться с импортом нестандартных модулей.
    3. у меня всё в utf8, вроде всё нормально проверяется и под виндой, и под линуксом.
    4. меня сначала ломали ограничения pep8, но потом как-то втянулся что ли, и даже можно сказать что нравится результат ...

    Сейчас глянул, последнее обновление pylint было от 17 января этого года. Против pep8, которая обновилась 17 февраля. Так сказать разница наверно особо не велика.

    Reason89, PyLint создан не только для pep8. Это более широкая вещь.

Отправить комментарий