21 ошибка программиста PHP. Часть 2 - Пренебрежение правилами присвоения имен
ОГЛАВЛЕНИЕ
14. Пренебрежение правилами присвоения имён
Одна из наиболее серьёзных ошибок программиста - непродуманная система именования переменных проекта. Нередко приходится тратить уйму времени на разбор кода только потому, что автор вдруг решил ввести в программу переменные $fred и $barney вместо ожидаемых $email и $name. Речь ведётся о реальном проекте, где не менее реальный программист решил все переменные проекта назвать именами героев мультсериала "Flinstones" (Это не шутка).
То как вы назовёте переменные и функции программы, определит во многом читаемость её кода. Наиболее распространёнными ошибками являются имена:
- слишком короткие или наоборот, чрезмерно длинные;
- не связанные по смыслу с контекстом программы;
- не учитывающие регистрозависимость;
- замедляющие разбор и чтение кода (особенно это касается имён функций).
Именование переменных
Регистрозависимость
В PHP имена переменных регистрозависимы, то есть $user и $User - две записи в списке переменных скрипта. Однако некоторые программисты активно пользуются этим и производят на свет переменные с совершенно одинаковыми именами, но использующими буквы разных регистров. Это отвратительная привычка. Регистр букв никогда не должен быть единственным отличием двух переменных. Каждая переменная на своём поле действия должна иметь уникальное имя.
Слишком короткие имена
Для обозначения переменных многие программисты используют одним им понятные аббревиатуры. О чём впоследствии сильно жалеют, ибо смысл сокращения затерялся во времени своего создания. Имя переменной должно отражать характер её значения, то есть содержания и обозначаться полными словами или общепонятными сокращениями.
Слишком длинные имена
С другой стороны, наблюдаются случаи злоупотребления длинными именами. Наиболее общее правило: имя переменной должно состоять максимум из двух слов. Разделить эти два слова мы можем, поставив understrike (то есть "_") или написав второе слово с заглавной буквы.
Пример #1. Положительный.
Как правильно присваивать имена переменным:
<?php
$username = 'sterling';
$password = 'secret';
$teachers = array ('Sadlon',
'Lane',
'Patterson',
'Perry',
'Sandler',
'Mendick',
'Zung');
foreach ($teachers as $teacher);
?>
Пример #2. Отрицательный.
Теперь рассмотрим несколько преувеличенные примеры того, как не следует присваивать имена переменным:
<?php
$username_for_database = 'sterling';
$guMbi = 'secret'; // for the $password
$thelastnamesofteachers = array ('Sadlon',
'Lane',
'Patterson',
'Perry',
'Sandler',
'Mendick',
'Zung');
foreach ($thelastnamesofteachers as
$TeaChER);
?>
Имена функций
Все правила, применяемые для имён переменных, годятся и для функций. Однако в случае с функциями, грамматические реалии имеют большее значение.
Помните, что в PHP все функции, встроенные или определённые разработчиком, - регистронезависимы.
Использование глаголов
Функции в PHP можно сравнить с какими-либо действиями, совершаемыми в реальном мире. Таким образом, имена функций должны отражать эту направленность на действие, то есть выражаться глаголами. Причём лучше в настоящем времени.
В качестве примера рассмотрим функцию, генерирующую Гауссовы случайные числа. Предполагается, что из её имени мы должны понять, какая именно формула используется в генерации числа. Вот так: generate_gaussian_rand().
Обратите внимание на использование глагола в имени функции. Именно глагол помещает функцию в правильный контекст:
<?php
list ($num1, $num2) = generate_gaussian_rand();
list ($num3, $num4) = generate_gaussian_rand();
?>
Для сравнения, другой пример:
<?php
list ($num1, $num2) = gaussian_rand_generator();
list ($num1, $num2) = gaussian_rand_generator();
?>
Видите разницу? Во втором примере для обозначения действия использовано существительное. И если назначение функции ещё прослеживается, название затрудняет чтение кода.
Мораль: используйте глаголы!