Переменные и константы

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 и знание коротких переменных упрощает чтение кода сторонних модулей.

Вернуться к списку