PHP

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

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

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

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

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

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

  1. <?php
  2.   if($flag){
  3.     echo "Hello world!";
  4.   }
  5. ?>

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

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

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

  1. <?php
  2.   if($flag)
  3.   {
  4.     echo "Hello world!";
  5.   }
  6. ?>

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

3) Стиль Whitesmith

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

  1. <?php
  2.   if($flag)
  3.     {
  4.     echo "Hello world!";
  5.     }
  6. ?>

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

4) Стиль GNU

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

  1. <?php
  2.   if($flag)
  3.     {
  4.       echo "Hello world!";
  5.     }
  6. ?>

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

  1. <?php
  2.   $flag = true;
  3.   if($flag)
  4.   {
  5.     echo "Переменная равна true";
  6.     exit();
  7.   }
  8.   else
  9.   {
  10.     echo "Переменная равна false";
  11.     exit();
  12.   }
  13. ?>

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

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

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

  1. <?php
  2.   // Неправильно
  3.   $a=$b+$c*$d;
  4.   // Правильно
  5.   $a = $b + $c * $d;
  6. ?>

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

Комментарии

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

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

  1. <?php
  2.   # Программный модуль index.php
  3.   echo "Hello world!";
  4. ?>

и С++ (//)

  1. <?php
  2.   // Программный модуль index.php
  3.   echo "Hello world!";
  4. ?>

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

  1. <?php
  2.   /* Это многострочный комментарий в стиле С
  3.      он охватывает несколько строк – не допускается
  4.      вложенных комментариев
  5.   */
  6.   echo "Hello world!";
  7. ?>

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

  1. <?php
  2.   //////////////////////////////////////////////////////
  3.   // Гостевая книга
  4.   //////////////////////////////////////////////////////
  5. ?>

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

  1. <?php
  2.   // Вывод текстовой строки в окно браузера
  3.   echo "Hello world!";  
  4. ?>

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

  1. <?php
  2.     echo "Hello world!"; // Вывод текстовой строки в окно браузера
  3. ?>

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

  1. <?php
  2.   if($tot)
  3.   {
  4.      while($position = next($tot))
  5.      {
  6.         /* Очень длинный код
  7.            содержащий много  
  8.            вложенных блоков
  9.            ...  
  10.         */
  11.         if($flag)
  12.         {
  13.           echo "Ошибка";
  14.           exit();
  15.         }
  16.      } // Конец while($position = next($tot))
  17.   }
  18. ?>

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

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

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

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

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

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

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

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

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