Изменения

Перейти к: навигация, поиск

Perl code style

1945 байтов добавлено, 19:51, 3 ноября 2014
Нет описания правки
Оно '''не совпадает''' со стандартными рекомендациями perlstyle, потому что, ИМХО, оно '''лучше''' — приводит к гораздо более читаемому коду :)
Кстати, аналогичный стиль я всегда использую при программировании и на других языках — и на Java, и на C/C++, и на JavaScript, и на PHP. Не получается только с убогим питоном.питоном — Гвидо же выпендрился, убрав фигурные скобки совсем…
== Отступы, пробелы ==
Пробелами обрамляется большинство операторов — присваивания, сравнения, логические, арифметические и т. п. Исключение могут составлять слагаемые в арифметических выражениях, например, <tt>$a*10 + 5</tt>.
 
Файл всегда должен заканчивается переводом строки.
== Блоки ==
</code-perl>
Для строк не следует использовать синтаксис q{}, qq{}. Обычных кавычек (<nowiki>('одинарных'</nowiki> и "двойных") </nowiki> вполне достаточно. HEREDOC — разрешён, но на крайний случай, для очень длинных строк.
Суффиксная запись if/unless/for допускается только для очень коротких одинарных и однострочных операторов. Даже если тело if’а или for’а однострочное, но условие длинное и его приходится переносить на следующую строчку — лучше предпочесть обычную запись с фигурными скобками. Если тело выглядит слишком коротким — лучше заставить себя добавить к нему комментарий:
</code-perl></s>
ВСЕГДА == Программирование == Нежелательно пользоваться линейным поиском в массиве. Практически всегда лучше искать с помощью хеша. DRY (!!!) Если блок кода повторяется хотя бы ДВА раза — повторение следует СРАЗУ убрать и вынести в функцию. Никакого хардкода! Всё, что потенциально может различаться в разных системах и окружениях, должно быть вынесено из кода в параметры конфигурации. Если в проекте используется база данных, всегда должен существовать явный способ её инициализации либо специальными скриптами инициализации, либо просто SQL-файлом, в обоих случаях входящими в код проекта и версионируемыми вместе с ним. Иными словами, если новую базу данных легче всего инициализировать копированием с существующей (боевой или тестовой) системы — это беспредел. Также очень желательно, чтобы были и скрипты миграций (то есть, обновления схемы) БД — опять-таки хотя бы просто SQL-файлами. В SQL-запросах следует ВСЕГДА использовать bind-переменные, и лишь только в крайнем случае — подстановку значений с помощью <tt>$dbh->quote()</tt>.
Желательно использовать методы <tt>$dbh->select***</tt> и помнить о <tt>{Slice=>{}}</tt>, дающем возможность получить строчки из БД в самом удобном виде — в виде ссылки на массив хешрефов, например,
</code-perl></s>
Пары prepare/execute и построчный fetch имеет смысл использовать только при потоковой обработке очень больших наборов данных, и в этом случае '''при использовании MySQL обязательно включить mysql_use_result'''.

Навигация