Серия постов "Стандарты кодирования Perl". Часть 2: Переменные и константы.
1. Не отделяйте имена переменных и функций от следующей за ними открывающей скобки
Важно ставить открывающую скобку слитно с именем функции или переменной. В противном случае можно визуально спутать функцию с ключевым словом, а начало выражения для элемента массива или хэша со скаляром.
# ХОРОШО
next CANDIDATE if open_region($i);
$candidates[$i] = $incumbent{ $candidates[$i]{region} };
# ПЛОХО!
next CANDIDATE if open_region ($i);
$candidates[$i] = $incumbent { $candidates[$i]{region} };
2. Осмысленные названия идентификаторов
Выбирайте осмысленные названия для идентификаторов (переменных, констант, функций). Исключение составляют итераторы циклов, где допускаются короткие идентификаторы: $i, $n и т.п. При этом не допускается калька с русского языка («$polzovatel», «$sajt» и т.п.). Если вы не можете вспомнить, что это имя значит — у вас проблемы.
3. Строчные буквы для названий переменных и функций
Названия всех переменных и функций должны состоять только из строчных букв, цифр и знаков подчёркивания: «get_domain_name» и т.п.
Хотя короткие идентификаторы типа $gotit возможно и неплохи, используйте знак подчеркивания для разделения слов. В общем случае $var_names_like_this прочесть легче чем $VarNamesLikeThis.
4. Заглавные буквы для констант
Константы именуются только с использованием заглавных букв:
use constant DEBUG => 0;
Readonly my $STAGING => 1;
5. Именуйте массивы во множественном числе, а скаляры в единственном
Массивы рекомендуется называть во множественном числе: @users, @objects, а скаляры — в единственном: $user, $object. Что касается хешей, то некоторые авторы рекомендуют также именовать их в единственном числе (%param), т. к. для хэшей гораздо более распространено обращение к единственному их элементу ($param{user_id}), в то время как массивы чаще обрабатываются целиком.
6. Используйте именованные итераторы в циклах for/foreach
Использование $_ в качестве итератора в циклах for / foreach допускается лишь в случае очень коротких, однострочных циклов / циклов с постфиксной записью:
print $_ for @array; # Допустимо
for (@array) { # НЕДОПУСТИМО!
.... # длинное тело цикла
}
7. Не используйте «магических чисел»
«Магическое число» — это число, которое появляется в коде без всякого объяснения; например «$bank_account_balance *= 57.492;». Вы смотрите на это число и не понимаете, откуда оно взялось и почему именно оно. Поскольку Вы не понимаете значения этого числа, Вы не понимаете код.
В целом, числовые литералы кроме 0 и 1 вообще не должны использоваться. Если Вам нужно использовать другие константы — оформите их как константы (через use constant, use Readonly или как ещё) с осмысленным именем.
use Readonly;
Readonly::Scalar $PI => 3.14159265358979;
...
my $square = $PI * $radius ** 2;
8. Не используйте числовые коды ошибок. Используйте осмысленные строковые коды.
Это правило — следствие из предыдущего. Вместо числовых кодов ошибок используйте осмысленные строковые — так гораздо нагляднее. Сравните: код 3654 vs 'HOSTNAME_INVALID', 20053 vs 'NOT_ENOUGH_MONEY_ON_ACCOUNT'. Магическим числам в коде (в том числе в качестве кодов ошибок) — наше решительное нет!
Original: REG.RU coding standarts