О сайтах и не о сайтах

Теперь и в tg!

tg

Переехал с твиттера на t.me/tulvit_blog, если что.

Хороший стиль программирования

Приятно иногда покопаться в грамотно оформленных исходниках, однако часто стал замечать, что разобраться в самописном коде трудно уже на следующий день. Видимо сказывалось отсутствие единого стиля программирования, что приводило код к бессмысленному нагромождению из скобок, непонятных переменных, функций. Постепенно пришло осознание того, что все-таки стоит вогнать организацию кода в некие рамки, а не писать как попало. К сожалению, каких-либо подробных инструкций не попадалось, и я продолжал кодить в «свободном» стиле. И вот с неделю назад наткнулся в одной книге по php в разделе “Полезные советы” на достаточно хорошую статью. Изначально хотел перепечатать себе в блог, но потом нашел оригинал в интернете, поэтому просто скопипащу. Тем, кто еще не выработал свой стиль программирования, читать обязательно.

Расстановка фигурных скобок и отступы

Существует несколько стилей расстановки фигурных скобок, все они диктуются существующими стилями в других C-подобных языках программирования.

1) Рациональный стиль

Это один из наиболее распространенных стилей, так как им пользовались Керниген (Kernighan) и Ричи (Ritchie), авторы языка C.

Преимущество этого подхода заключается в экономии вертикального пространства, жизненно важного при отладке большого блока кода. Оборотной стороной такого подхода является то, что может оказаться трудным найти символ {, спрятанный в конце строки. Этого стиля придерживаются и Java-программисты, как-то приписывает Sun.

2) Стиль Алмена

Эрик Алемен (Eric Allman) написал утилиты BSD в этом стиле, поэтому этот стиль часто называют "стиль BSD":

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

3) Стиль Whitesmith

Данный стиль предписывает использование следующей расстановки фигурных скобок

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

4) Стиль GNU

Программисты GNU фонда Free Software Foundation используют следующий стиль расстановки фигурных скобок

Внутри любых управляющих конструкций операторы следует располагать с отступом на одинаковое число пробелов, например для операторов if-then-else код должен выглядеть следующим образом:

Число может быть любым, обычно используют 2, 4 или 8 пробелов. Наиболее оптимальным является использование 2 пробелов, так как при их большем числе вложенные блоки становятся "растянутыми" и их становится сложно воспринимать.

Пробелы вокруг символов

Бинарные операторы следует обрамлять пробелами:

Символ пробела ассоциируется с новым словом, поэтому формула читается не как непонятный набор символов, а как нечто осмысленное.

Комментарии

Расставляйте комментарии по принципу “чем больше, тем лучше” — пройдёт некоторое время и вы забудете, что делал тот или иной программный блок.

PHP собрал в себе практически все комментарии современных языков программирования, наряду с однострочными комментариями в стиле shell-скриптов (#)

и С++ (//)

можно использовать многострочный комментарий в стиле C:

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

Как и при работе с отступами и фигурными скобками, основным требованием является необходимость придерживаться одного стиля во всех программных блоках.
При расстановке однострочных комментариев возможно два варианта: непосредственно перед выполняемым оператором

и после точки с запятой

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

Имена переменных и функций

Существует несколько стилей названия переменных

$var_bell — стиль C: нижний регистр, знак подчёркивания.

$VarBell — стиль Pascal: каждая подстрока в названии начинается с большой буквы.

$varBell — стиль Java: первая строка начинается с маленькой буквы, все последующие с большой.

Не имеет значения, какой стиль будет вами выбран — главное придерживаться в коде одного стиля.

Замечание

В программировании константы традиционно записываются в верхнем регистре YANDEX_BOT. Если вы хотите, чтобы другие программисты могли легко воспринимать ваш код, придерживайтесь этого правила.

При названии переменных и функций старайтесь давать им осмысленные имена. Иногда ничего не приходит в голову, и появляется назвать переменную как попало — остерегайтесь этого.

(c) Симдянов И.В.

Комментарии

Да, тоже наконец-то пришел к выводу, что стиль нужен. Раньше всё по принципу вертикальной минимизации писал, но потом стало тяжко разбираться. Хорошо, что текстовые редакторы специальные, как правило, помогают форматировать код, у них прописаны соответствующие правила.

Но с отступами мне не очень понятно, почему делают несколько пробелов вместо табуляции?

Тормоз, причем стиль лучше выработать свой, "кроссязыковой", удобный самому себе, и понятный другим. Главное отучиться называть переменные и функции n, n1 и т.д., реально уже на следующий день приходится минут пять вспоминать что это и зачем здесь.

А табуляцию я сам недолюбливаю, с пробелом все ясно - а сколько занимаем табуляция не совсем, сейчас потестил - в блокноте табуляция примерно равна 8 пробелам, в ворде 9, в вордпаде 10. Ну нафик, уж лучше пробел. Да и плюс ко всему у всех по дефолту стоит в текстовых редакторах не показывать непечатаемые символы, так не совсем приятно, когда хочется сдвинуть в исходниках скобку на пару пробелов назад, а она улетает сразу к началу строки.

А хороший редактор тоже играет не последнюю роль, я все еще в блокноте на пхп пишу, надоело уже, в скобках порой не разобраться, хочу срастить Eclipse с PHP, но все откладываю на завтра.

Зато это один символ, а забивание кода пробелами претит моему перфекционисткому настрою :) Но это всё вкусовщина, конечно, не очень важно.

Я в windows использовал PSPad, попробуй, может быть понравится. Он вроде бы и простой, как блокнот, но очень удобен. Есть и подсветка и автодополнение, и даже встроенные справки по функциям. Мне очень нравился этот редактор.

http://www.pspad.com/ru/

Сейчас в Линуксе осваиваю легендарный Vim. Начинать довольно тяжело, совсем другая парадигма. Но уже чувствую, насколько он потенциально более удобный. Мощная штука. Под windows наверняка тоже есть клон какой-нибудь.

P.S. Кстати, писать PHP в блокноте - это жесть. На самом деле прямо сейчас скачай тот же PSPad и уверен, в тот же день про блокнот будешь вспоминать как о страшном сне. Там и текущие выражения в скобочках удобно подсвечиваются и всё такое... Попробуй сейчас, не тяни :)

Тормоз, спасибо за ссылку, обязательно попробую, хорошо хоть, что бесплатный, что-то уже качал, но платное, PHP Expert Editor вроде, вещь хорошая, но платить за текстовый редакторов жаба душит.

А то что в блокноте кодить - жесть, согласен. Но пока и кодить по больше степени не приходится, так, по мелочи, только учусь можно сказать, но учить надо, т.к. в голове крутится куча грандиозных проектов, которых без прогерства не реализовать.

О! У меня второй стиль программирования =)
Первый - нифига не видно, где if-ы и циклы кончаются. А так - смотришь по вертикальке и корошо =)

Гг..У меня тоже второй стиль расстановки кода...Держится еще с
С++ времен студенчества...Delphi както еще приучил блоки с новой строки начинать))))..Begin...End
А на работе стараюсь придерживаться вот этого: dagbladet.no/development/phpcodingstandard/
В основном все советы стандарта мне показались логичными..Поэтому принял во внимание.
Договорились с остальными делать отступы не табами, а по 4-е пробела, иначе в линухе траблы.
В качестве редактора используя шаровый http://www.phpexperteditor.com/
он шаровый для всех словян)))...Вроде удобный...Думаю, может вам стандарт или редактор даст сэкономить немного времени ;)

Спасибо за программирование.

По поводу PHP Expert Editor, если вы перейдете на русскую версию сайт то увидите что там на странице оплаты есть кнопка выслать код бесплатно тем кто живет на территории бывшего СССР.

По поводу поста, все отлично. Я тока начинаю и если честно о стиле вообще не задумывался :))

Те кто не пробовал VIM - ничего не пробовали!!!

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