Эпиграф — "Tim Toady Bicarbonate".
Perl можно использовать множеством разных способов, но удобно, когда есть какие-то общие правила. В этом посте я собираю мои предпочтения о том как нужно писать Perl код. Это в первую очередь документ для меня, но я буду очень рад, если другие люди тоже станут использовать этот Style Guide без изменений, либо возьмут этот докумен за базу и внесут необходимые правки (т.е. напишут, что используется BPSG версии 2.0.0, но правило 34 затирают своим правилом).
Любое правило можно нарушить, но нужно веская причина почему правило стоит игнорировать в этом конкретном случае.
Версия документа: 2.0.0 (используется семантическое версионирование)
Changelog:
1.0.0 2013-08-08
[Major]
* Inital version
2.0.0 2014-01-19
[Major]
* Simplified the numeration scheme
2.1.0 2014-02-04
[Minor]
+ 6. Не должно быть закомментированного кода
2.2.0 2014-08-05
[Minor]
+ 7. Всегда использовать прагмы strict и warnings
Это самая популярная кодировка, конечно стоит использовать именно ее.
Нужно найти/написать Perl тест, чтобы иметь возможность проверять что файл написан в кодировке UTF-8.
BOM — это Byte order mark, штука с помощью которого указывают кодировку файла. Поскольку уже есть правило 1.1, которое говорит что кодировка всегда UTF-8, то BOM использовать избытачно.
Нужно найти/написать Perl тест, который может проверять что BOM не используется.
=encoding UTF-8
Далеко не всегда в POD есть какие-то символы, которых нет в простой 8-и битной
кодировке Latin1. Когда такие символы есть, то конечно, обязательно
нужно узазывать =encoding UTF-8
. Но даже когда весь POD написан простым
latin1, все равно стоит указывать кодирову UTF-8, чтобы изменение текста не
потребовало еще и дописывание директивы.
Ссылка на stackoverflow, с ответом что из всех возможных кодировок "utf8", "UTF-8", "utf-8" нужно писать именно "UTF-8".
И директива =encoding UTF-8
всегда должна быть самой первой директирой POD.
Нужно писать $some_variable
, а не $SomeVariable
или как-то иначе.
Предпосылки этого — то что это самый читаемый стандарт и это очень распространенная практика в мире Perl.
Достаточно часто в коде встречаются переменные которые хранят в себе имя
какого-то файла. Такую переменую называют по разному: иногда $filename
, а
иногда $file_name
. Какого-то очивидного плюса нет ни у одного варианта, но
чтобы был какой-то стандарт, я выбрал вариант $file_name
, так как на мой
взгляд это красивее.
Википедия тоже не вносит однозначного ответа как правильно, цитирую:
A filename (also written as two words, file name) ...
Исходный код должно быть просто читать. Если в коде есть закомментированные строки, то возникает вопрос почему эти строки не используются, — не ошибка ли это. Чтобы убрать такие вопросы в исходном коде не должно быть закомментированных строк кода.
Даже есть серьезные основания считать что совсем скоро код поменяется, не нужно писать закомментированные участки в расчете на будущее. Вполне возможно, что появятся другие более срочные задачи или поменяются планы, а код останется с комментарием, который никогда не будет использован.
Неправильно:
$model->do_work();
# Uncomment to outut debug:
#
# say "Model after do_work()";
# say "Model status: " . $model->status;
# say "Model output: " . $model->output;
Правильно:
$model->do_work();
Во всех скриптах и модулях дожено быть:
use strict;
use warnings FATAL => 'all';
Пример проблемы которая может возникнуть если не использовать в посте "Грабля Perl кода my $success = false;"
8 августа 2013