Гайдлайн PHP: основные правила

Поговорим о красоте кода.
28 октября 2016326451Илья Бубнов35601728

Сам по себе язык 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 кода?

 

Популярные статьи

Новые комментарии