Гайдлайн PHP: основные правила
Сам по себе язык PHP достаточно фривольный, так как не требует от разработчика строгих правил оформления. Огромная масса этих самых разработчиков — самоучки, игнорирующие понятие читабельности, а значит своими действиями дурную репутацию PHP только укрепляющие. Поэтому давайте прямо здесь составим перечень основных правил записи кода, чтобы читать его было приятно каждому.
Табуляция или пробел
Начнем с самого общего. Во многих редакторах разделение уровней наследования оформляется при помощи табуляции:
for ( $i = 0; $i < 5; $i++ )
{
func_space($i);
}
Однако, когда количество циклов становится слишком большим, а используемые названия переменных слишком длинные, то листать код приходится не только по вертикали, но и по горизонтали, что совсем неудобно для просмотра. Резонным выходом из ситуации будет использование вместо табуляции пробелов.
Фигурные скобки
Один из самых популярных вопросов относительно стиля кода: всегда ли ставить скобки и в каком виде? Ответ очевиден: всегда и так, чтобы они однозначно определяли начало и конец. Если вы начинали свой путь в PHP через язык C, то наверняка помните популярный вид записи, где открывающая скобка ставилась в той же строке, что и оператор цикла:
for ( $i = 0; $i < 5; $i++ ) {
func_space($i); }
А если ещё воспользоваться первым правилом и ставить пробел вместо табуляции, тогда найти тело цикла будет совсем непросто.
Имена
В любом гайдлайне к любому языку программирования названия переменных и функций рекомендуется выбирать исходя из их назначения, избегая непонятностей. Однако для переменных-счетчиков, которые используются лишь в цикле, можно сделать исключение. Одно «но»: избегайте соседствующего применения $i и $l (строчная версия буквы L).
Для значимых же переменных названия всегда лучше писать через подчёркивание, то есть $letter_position, а не $letterposition. Чтобы проще было различать переменные и константы, при написании последних рекомендуется использовать заглавные буквы: USER_MACHINE.
Что касается функций, то для их обозначения в название всегда лучше включать глаголы, например, get_list(). Ну и само собой, следите за общей длиной имён, не пытаясь впихнуть целое предложение.
Пробелы
Вообще умение использовать пробелы не только для смещения, но и для простого удобства чтения — великое искусство. Как минимум, старайтесь хотя бы соблюдать простые правила печати. Просто сравните:
(i < 6) || (i > 10)
И
(I<6)||(i>10)
Ответ очевиден. При этом не стремитесь ставить пробел там, где это только возможно, ведь это вновь приведёт к растягиванию кода в горизонтальной плоскости.
Круглые скобки
Как программист, вы наверняка знаете порядок действий в логических и математических операциях, поэтому вы прекрасно понимаете смысл следующей строки:
$result = i < 4 || i >8 && n != 4 || m == 2;
Но согласитесь, куда более удобной будет следующая форма:
$result = (i < 4 || i > 8) && (n != 4 || m == 2);
или даже
$result = ( (i < 4) || (i > 8) ) && ( (n != 4) || (m ==2) );
Кавычки
С применением кавычек в PHP также существует определённая путаница. Как известно, преимущество двойных кавычек над одинарными заключается в том, что если у вас там имеется переменная, то он её находит и использует значение. Если нет – то это обычная строка.
Это и заставляет думать горе-программистов, что всегда можно лепить двойные кавычки, не задумываясь о лишних ресурсах. А вы подумайте и строки без переменных заключайте в одинарные кавычки. Сэкономите на ресурсах.
Операторы инкремента и декремента
Сама по себе упрощённая конструкция увеличения или уменьшения переменной на единицу зачастую закладывается в ещё одну операцию для экономии места. Выглядит это вот так:
$mass[i++] = $num_one;
Несмотря на то, что исход данной операции понятен, её запись сложно назвать удобной для чтения и понимания. Правильнее подобные операторы писать отдельной строкой:
i++;
$mass[ i ] = $num_one;
Лишние конструкции
Несмотря на то, что гайдлайны зачастую, по мнению неаккуратных программистов, заставляют писать избыточный код, есть некоторые моменты, когда лучше сокращать. Перед вами стандартный пример опросной формы:
if ( isset($_POST['first_name']) )
{
$first_name = $_POST[' first_name '];
}
else
{
$ first_name = '';
}
Казалось бы, просто и доступно написано, но зачем тратить столько места, если можно использовать тернарный оператор:
$first_name = isset($_POST['first_name']) ? $_POST['first_name'] : '';
Так-то лучше.
У меня пока всё. А какие вы дадите рекомендации по оформлению PHP кода?