Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2014-09-08

PEP 8, Whitespace in Expressions and Statements

Изучаем PEP 8 по частям. Часть 4, Whitespace in Expressions and Statements.
Тут говорится о том, что:

Любимая мозоль — лишние пробелы.

Пробелы не нужны:
* Сразу после/перед открывающей/закрывающей скобкой.
* Перед запятой, двоеточием, точкой-с-запятой.
* Перед открывающей скобкой в списке аргументов или вызове функции, в индексах.
* Больше одного пробела вокруг операторов.

Еще рекомендации по пробелам.

Всегда ставьте пробелы вокруг операторов
assignment (=), augmented assignment (+=, -= etc.), comparisons (==, <, >, !=, <>, <=, >=, in, not in, is, is not), Booleans (and, or, not)

Если в одном выражении используются операторы с разным приоритетом, окружайте операторы с низким приоритетом пробелами, оставляя без пробелов операторы с высоким приоритетом
hypot2 = x*x + y*y

Не ставьте пробелы вокруг «=» когда этот символ используется для указания именных аргументов или дефолтных значений
def complex(real, imag=0.0):
    return magic(r=real, i=imag)

Составные выражения, когда на одну строку пишется несколько выражений, не приветствуются в общем случае.


По моему скромному мнению и, согласно утверждению «A Foolish Consistency is the Hobgoblin of Little Minds», от некоторых из этих рекомендаций иногда лучше отступать с целью повышения читаемости кода.
В частности, когда подряд идет несколько скобок, можно отбить пробелом выразительную часть от невыразительной.
Или онлайнеры — составные выражения. Иногда глазу приятнее с ними, чем без них.
Довольно спорный момент — выравнивание серии присваиваний
x             = 1
y             = 2
long_variable = 3
тут 50/50, глазу приятнее, но практичность ниже плинтуса, что выравнивает шансы.




original post http://vasnake.blogspot.com/2014/09/pep-8-whitespace-in-expressions-and.html

2 комментария:

  1. Вот как раз правила с пробелами я часто нарушаю намеренно. Мне кажется, что перед открывающейся скобкой пробелы нужны - так нагляднее, если у функции длинный список переменных (если функция не принимает никаких параметров, пробел обычно не ставлю). То же самое касается и пробелов до/после = в параметрах функций. Без пробелов все сливается в одну кучу.

    ОтветитьУдалить
    Ответы
    1. Очень часто все эти правила фиксируют вкусовые пристрастия автора правил. Я такое называю "вкусовщина". На вкус и цвет все фломастеры разные.
      С другой стороны, когда проект большой и работает целая команда, лучше руководствоваться правилами, даже если они не совпадают с личным вкусом.
      Как в армии говорят: безобразно, зато однообразно :)
      А если работаешь один или команда под тобой - начхать на правила.
      Насчет функции с открывающейся скобкой и пробелом перед ней - вот тут, я думаю, вкус побоку. Если есть пробел, можно оконфузиться, перепутав функцию с каким-нибудь tuple.

      Удалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) Klaipeda (13) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)