PHP
Хороший стиль программирования
02.05.2009 в 09:36Приятно иногда покопаться в грамотно оформленных исходниках, однако часто стал замечать, что разобраться в самописном коде трудно уже на следующий день. Видимо сказывалось отсутствие единого стиля программирования, что приводило код к бессмысленному нагромождению из скобок, непонятных переменных, функций. Постепенно пришло осознание того, что все-таки стоит вогнать организацию кода в некие рамки, а не писать как попало. К сожалению, каких-либо подробных инструкций не попадалось, и я продолжал кодить в «свободном» стиле. И вот с неделю назад наткнулся в одной книге по php в разделе “Полезные советы” на достаточно хорошую статью. Изначально хотел перепечатать себе в блог, но потом нашел оригинал в интернете, поэтому просто скопипащу. Тем, кто еще не выработал свой стиль программирования, читать обязательно.
Расстановка фигурных скобок и отступы
Существует несколько стилей расстановки фигурных скобок, все они диктуются существующими стилями в других C-подобных языках программирования.
1) Рациональный стиль
Это один из наиболее распространенных стилей, так как им пользовались Керниген (Kernighan) и Ричи (Ritchie), авторы языка C.
- <?php
- if($flag){
- echo "Hello world!";
- }
- ?>
Преимущество этого подхода заключается в экономии вертикального пространства, жизненно важного при отладке большого блока кода. Оборотной стороной такого подхода является то, что может оказаться трудным найти символ {, спрятанный в конце строки. Этого стиля придерживаются и Java-программисты, как-то приписывает Sun.
2) Стиль Алмена
Эрик Алемен (Eric Allman) написал утилиты BSD в этом стиле, поэтому этот стиль часто называют "стиль BSD":
- <?php
- if($flag)
- {
- echo "Hello world!";
- }
- ?>
Аргументом в поддержку такого стиля является тот факт, что область видимости блочного оператора ясна и визуально ассоциируется с управляющим оператором.
3) Стиль Whitesmith
Данный стиль предписывает использование следующей расстановки фигурных скобок
- <?php
- if($flag)
- {
- echo "Hello world!";
- }
- ?>
Этот стиль имеет преимущество в том, что скобки более тесно ассоциируются с кодом, который они включают и разграничивают, однако при визуальном просмотре текста отыскать скобки оказывается чуть более сложно.
4) Стиль GNU
Программисты GNU фонда Free Software Foundation используют следующий стиль расстановки фигурных скобок
- <?php
- if($flag)
- {
- echo "Hello world!";
- }
- ?>
Внутри любых управляющих конструкций операторы следует располагать с отступом на одинаковое число пробелов, например для операторов if-then-else код должен выглядеть следующим образом:
- <?php
- $flag = true;
- if($flag)
- {
- echo "Переменная равна true";
- exit();
- }
- else
- {
- echo "Переменная равна false";
- exit();
- }
- ?>
Число может быть любым, обычно используют 2, 4 или 8 пробелов. Наиболее оптимальным является использование 2 пробелов, так как при их большем числе вложенные блоки становятся "растянутыми" и их становится сложно воспринимать.
Пробелы вокруг символов
Бинарные операторы следует обрамлять пробелами:
- <?php
- // Неправильно
- $a=$b+$c*$d;
- // Правильно
- $a = $b + $c * $d;
- ?>
Символ пробела ассоциируется с новым словом, поэтому формула читается не как непонятный набор символов, а как нечто осмысленное.
Комментарии
Расставляйте комментарии по принципу “чем больше, тем лучше” — пройдёт некоторое время и вы забудете, что делал тот или иной программный блок.
PHP собрал в себе практически все комментарии современных языков программирования, наряду с однострочными комментариями в стиле shell-скриптов (#)
- <?php
- # Программный модуль index.php
- echo "Hello world!";
- ?>
и С++ (//)
- <?php
- // Программный модуль index.php
- echo "Hello world!";
- ?>
можно использовать многострочный комментарий в стиле C:
- <?php
- /* Это многострочный комментарий в стиле С
- он охватывает несколько строк – не допускается
- вложенных комментариев
- */
- echo "Hello world!";
- ?>
К хорошему тону относится использование однострочных комментариев для короткого комментария, а многострочного — для комментария, охватывающего несколько строк. Не возбраняется использовать однострочные комментарии для большого текста, особенно в начале файла или важного блока кода
- <?php
- //////////////////////////////////////////////////////
- // Гостевая книга
- //////////////////////////////////////////////////////
- ?>
Как и при работе с отступами и фигурными скобками, основным требованием является необходимость придерживаться одного стиля во всех программных блоках.
При расстановке однострочных комментариев возможно два варианта: непосредственно перед выполняемым оператором
- <?php
- // Вывод текстовой строки в окно браузера
- echo "Hello world!";
- ?>
и после точки с запятой
- <?php
- echo "Hello world!"; // Вывод текстовой строки в окно браузера
- ?>
Лучше придерживаться первого правила, так как строка получается длинной и плохо воспринимается читающим. Единственным оправданием использования такого комментария является комментирование закрывающейся скобки длинного программного блока, содержащего много вложенных блоков.
- <?php
- if($tot)
- {
- while($position = next($tot))
- {
- /* Очень длинный код
- содержащий много
- вложенных блоков
- ...
- */
- if($flag)
- {
- echo "Ошибка";
- exit();
- }
- } // Конец while($position = next($tot))
- }
- ?>
Имена переменных и функций
Существует несколько стилей названия переменных
$var_bell — стиль C: нижний регистр, знак подчёркивания.
$VarBell — стиль Pascal: каждая подстрока в названии начинается с большой буквы.
$varBell — стиль Java: первая строка начинается с маленькой буквы, все последующие с большой.
Не имеет значения, какой стиль будет вами выбран — главное придерживаться в коде одного стиля.
Замечание
В программировании константы традиционно записываются в верхнем регистре YANDEX_BOT. Если вы хотите, чтобы другие программисты могли легко воспринимать ваш код, придерживайтесь этого правила.
При названии переменных и функций старайтесь давать им осмысленные имена. Иногда ничего не приходит в голову, и появляется назвать переменную как попало — остерегайтесь этого.
(c) Симдянов И.В.
