- Для обозначения вложенности блоков используется отступ табуляцией (НЕ пробелы). Для просмотра рекомендуется табуляция из четырех отступов. Сами отступы для обозначения вложенности обязательны;
- Скобка, открывающая блок, распологается на одной строке с ключевым словом (if, while, do и т.д.):
if (1) {
}
- Перед скобкой, открывающей многострочные блоки, ставится пробел:
if (1) {
}
- Блоки, состоящие из одной строки распологаются целиком на одной строчке (включая открывающие и закрывающие скобки):
if (1) { print “Да!” }
- Перед точкой с запятой пробелы НЕ ставятся;
- Точку с запятой после операторов можно НЕ ставить в однострочном блоке;
if (1) { print “Да!” }
- Вокруг большинства операторов ставятся пробелы (+ – = * / cmp <=> и т.д.):
$a = $b + 1;
$b += 1;
if ($a + 1) {}
- Если в скобках расположено сложное вычисляемое выражение, то вокруг него ставятся пробелы:
if ( tinyXML($content) ) {}
$A[ tinyIndex($content) ];
- Функциональные блоки разделяются пустыми строками, причем каждый из них начинается с комментария;
- Else записывается с пробелами с обоих сторон:
} else {
- После каждой запятой ставится пробел:
method( $a, $b, $c, $d );
- Длинные строки прерываются после окончания оператора (исключения – условия с and и or);
- Строки, расположенные на одном уровне вложенности, распологаются строго друг под другом на одном уровне отступов;
- Следует избегать излишней пунктуации;
- Если Вы можете что-то сделать, это вовсе не значит, что это стоит делать:
open(FOO,$foo) || die “Не могу!”;
лучше чем
die “Не могу!” unless open(FOO,$foo);
хотя и то и другое верно.
- Если Вы не уверены в том, можно ли в коде обойтись без скобок – ставьте их;
Class – названия классов пишутся с большой буквы (но состоят из маленьких);
$object – названия переменных пишутся маленькими буквами и подчеркиванием;
$CONSTANT – константы пишутся только большими буквами и подчеркиванием;
sub, method, function – функции, методы, процедуры пишутся маленькими буквами;
_sub_, _method_, _fuction_ – подчеркивание с двух или с одной из сторон указыват на скрытый характер метода;
- Аналогичные правила существуют для именования ключей хэшей:
$hash->{key} – обычный ничего не значащий ключ;
$hash->{CONSTANT} – ключ указывающий на другой специальный объект (например, $keeper->{SQL}, $keeper->{TSQL});
$hash->{_hidden_} – два или одно подчеркивание указывают на скрытость, служебность ключа – им нежелательно оперировать извне;
- Выбор названий для функций происходит по следующим правилам:
+ Используйте, пожалуйста, корретный и правильный английский язык. Грамматические ошибки недопустимы;
+ Используйте короткие имена функций, но без сокращений;
+ Рекомендуемые именования:
Действие_Объект – get_message(), get_messages(), get_children() (не забывайте про множественное число);
Действие_Принадлежность_Объект – get_message_body(), get_messages_bodies()
+ Для методов-флагов именования могут начинаться с is, has, например is_top(), has_childs();
+ Возможно использование постфикса _by_Что-то, особенно, если функция принимает одиночный параметр:
get_message_by_id(), get_user_by_login()
- В вызове функции или метода всегда используются скобки, даже если параметров нет:
method()
- Между названием функции и ее параметрами пробела НЕТ:
method($a) – правильно
- Код, который более не нужен УДАЛЯЕТСЯ, а не комментируется. При необходимости сделать backup он делается в домашней директории разработчика, а НЕ в директории проекта;
- Каждая большая компонента должна иметь секцию с комментариями <%doc>. Комментарии пишутся на русском языке (грамотном, по возможности) в кодировке utf-8.
- Ключевые слова Mason, открывающие или закрывающие блоки (<%init>,<%args>...), можно писать как большими, так и маленькими буквами. Но обязательно отделать от кода (и html и perl) пустыми строками;
- Когда переменные вставляются в контейнеры в HTML::Mason’е для вставки их в html-коде с обоих сторон от переменной должны идти пробелы!
<% $value %> – правильно