Переменные и константы
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}
),
в то время как массивы чаще обрабатываются целиком (см. пп. 5.3, 5.4).
6. Используйте именованные итераторы в циклах for/foreach
Использование $_
в качестве итератора в циклах
for
/ foreach
допускается лишь в случае очень коротких, однострочных циклов / циклов с
постфиксной записью:
print $_ for @array; # Допустимо
for (@array) { # НЕДОПУСТИМО!
.... # длинное тело цикла
}
См. PBP стр. 105: «Use named lexicals as explicit for loop iterators».
7. Не используйте «магических чисел»
«Магическое число» — это число, которое появляется в коде без всякого объяснения;
например «$bank_account_balance *= 57.492;
».
Вы смотрите на это число и не понимаете, откуда оно взялось и почему именно оно.
Поскольку Вы не понимаете значения этого числа, Вы не понимаете код.
В целом, числовые литералы кроме 0 и 1 вообще не должны использоваться.
Если Вам нужно использовать другие константы — оформите их как константы (через use constant
,
use Readonly
или как ещё) с осмысленным именем.
use Readonly;
Readonly::Scalar $PI => 3.14159265358979;
...
my $square = $PI * $radius ** 2;
См. Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers.
8. Не используйте числовые коды ошибок. Используйте осмысленные строковые коды.
Это правило — следствие из предыдущего.
Вместо числовых кодов ошибок используйте осмысленные строковые — так гораздо нагляднее.
Сравните: код 3654
vs 'HOSTNAME_INVALID'
, 20053
vs 'NOT_ENOUGH_MONEY_ON_ACCOUNT'
.
Магическим числам в коде (в том числе в качестве кодов ошибок) — наше решительное нет!
9. use English
use English использовать не запрещается, но предпочтение отдается коротким именам. Они - стандарт мира Perl и знание коротких переменных упрощает чтение кода сторонних модулей.