Pull to refresh

Умный хак об употреблении пробела после имени функции (перед последующей скобкою)

Programming *
Как известно, в употреблении пробела после имени функции (перед последующей скобкою) есть два пути во всех тех языках, в которых после имени функции бывают скобки (например, в Си, в Си++, в PHP, в JavaScript…).

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

Руководствуясь соображениями экономии пробела, большинство авторов стилей и стандартов кодирования приходят к представлению о правильности первого из этих путей. Можно убедиться в этом на примере стандартов кодирования PHP: стандарты PEAR ([1], [2]), Zend, Symfony, CakePHP, DB Medialab, evolt.org, GForge, а также nIx0iDовский собственный стандарт все, все они своим примером рекомендуют воздерживаться от пробела.

Однако сравнительно недавно я увидал в Интернете (не то на Хабрахабре, не то на другом подобном сайте) проповедь третьего пути: ставить пробел после имени функции (и перед последующей скобкою) только в определении этой функции, однако не ставить пробел при вызове функции. Автор этого рецепта догадался (и вполне справедливо), что следование этому третьему пути открывает перед программистом возможность набрать в поиске строку «имяФункции (» с пробелом для того, чтобы тотчас найти в исходном коде определение функции, не продираясь через чащи и дебри её вызовов.

Со временем я пришёл к выводу, что такой умный хак будет неизменно полезен всегда, когда IDE нет под рукою, а есть простой текстовый поиск — или когда IDE недостаточно разумна для того, чтобы ей самóй уметь разыскивать именно определение желаемой функции. Лишний пробел позволяет программисту и без того невозбранно достигнуть желаемого.

Увы, к этому выводу я пришёл слишком поздно. Впервые завидев этот рецепт, я позволил всплыть из ленивых глубин подсознания вопросу «Это ж сколько пробелов понарасставлять придётся?!» — вопросу, который тогда мне показался достаточно риторическим и запретительным. С тех пор я поспел воочию убедиться в том, что этот рецепт на деле экономит куда больше времени при поиске, чем пришлось бы затратить времени на расстановку пробелов в заголовках функций; а значит, экономия на этих пробелах — не менее ложная экономия, чем экономия на комментариях или чем буказоидное документирование (от англ. «bukazoid documentation pattern»; в моём переводе, если угодно — «будланýтое документирование», по фразе Щербы «глокая куздра штеко будланула бокра…»). Проблема в том, что пока я в этом убеждался, всецело запамятовал и автора, и источник рецепта.

Читатель! он тебе не попадался?
Tags:
Hubs:
Total votes 43: ↑20 and ↓23 -3
Views 1.2K
Comments Comments 23