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

2013-04-25

Выравнивание

Есть такая холиварная тема — code indentation. Особое значение отступы приобретают в языках типа Python. Что нам говорит руководящий документ:

For new projects, spaces-only are strongly recommended over tabs. Most editors have features that make this easy to do.

Есть статья, в которой перечисляются проблемы, возникающие при использовании табуляции вместо пробелов

Поскольку использование табуляции (код ASCII 9) обычно вызывает всякие проблемы с кодом, используйте хорошее правило:
1) Никогда не используйте табуляцию

Reasons not to use hard tabs
* Due to legacy, different text editors treat hard tabs different. UNIX text editors prefer hard tab is 8 spaces, Windows text editors and IDEs (Eclipse) prefer that a hard tab is 4 spaces.
* The hard tab length agreement between different text editors cannot be reached
* The hard tab length agreement between people cannot be reached
* Thus, hard tabs may break source code readability and editability if there is more than a single person editing the file. They will open the file in an editor with different tab settings, edit it and next time you open the file it is ruined and all indentations are wrong.
* This is even worse on white space sensitive languages (Python, CoffeeScript) as this might actually cause syntax errors or programming logic errors


Лично я не считаю перечисленные проблемы серьезными или заслуживающими внимания. Все они решаются довольно легко настройками редактора или пре/пост конвертацией файлов.

Зато у меня есть ровно две причины, по которым я хочу использовать табуляцию вместо пробелов для выравнивания кода:
1. идейная причина — концептуально именно табуляция предназначена для «отбивки» и выравнивания;
2. практическая причина — когда я использую пробелы для выравнивания и случайно удаляю один из четырех (обычно) пробелов отступа, меня крайне раздражает необходимость искать микроскопический сдвиг (ширина пробела это сколько пикселов?) и вбивать недостающий пробел.

Когда я использую табуляцию, случайное удаление одного символа приводит к очень заметному сдвигу строки, что исправляется тычком в кнопку «Tab», как и положено. С пробелами так не выходит.

Но как человек законопослушный, я буду выполнять рекомендации PEP-0008 и использовать пробелы для отступов в Python. Может быть, со временем привыкну и перестану раздражаться неуместностью и неудобностью пробелов в отступах.

original post http://vasnake.blogspot.com/2013/04/blog-post_25.html

Комментариев нет:

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

Архив блога

Ярлыки

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) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) 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)