Новичку полезно

  • А знаете ли вы что?

    - rudvs - в любом месте веселее вместе!


[Perl]Пишем читабельно

Теги: код, информация, write-only, программирование, perl

"Каждый дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям." (с) Мартин Фаулер

Abstract

И без того нечитабельный код на перле без каких то стандартов оформления можно превратить в write-only, что и делают начинающие. Не исключение и лютые программисты, которые в спешке могут такое написать, что сами то без пол-литра не разберут. Для того чтобы это избежать, нужно придерживаться некоторых советов по оформлению кода, примеры которых постараюсь описать ниже.

0.1 Half-Tab

Новый блок кода нужно визуально выделить. Для этого используют табуляцию в 4 пробела:

if (time() > $time) {
    open (FILE, "file.txt");
    my @strings=;
    close(FILE);
}

или

{
    open (FILE, "file.txt");
    my @strings=;
    close(FILE);
}

     При чем пробелы лучше ставить вручную, а не настраивать редактор. Так как другой пользователь с другими настройками не оценить ваши старания.

0.2 Пробелы перед фигурной скобкой

Перед открывающей фигурной скобкой нужно сделать пробел

if ($foo == $bar) {
    ...
}

0.3 Открывающая фигурная скобка на той же строке

Открывающая фигурная скобка должна стоять через пробел после ключевого слова и условий, после нее следует перенос строки. Исключение допускается в случае короткого выражение внутри блока:

if ($foo == $bar) { $x = $bar; }

При этом лучше всего пользоваться постфиксным построением:

$x = $bar if $foo == $bar;

0.4 Закрывающая фигурная скобка

Закрывающая фигурная скобка должна стоять на новой строке вертикально совпадающая с ключевым словом.

0.5 else и elsif

Выражения else или elsif следует всегда ставить на новой строке:

if ($foo == $bar) {
    ...
}
else {
    ...
}

0.6 Пробелы вокруг знаков операций

$foo = $a + $b; # Зачет
$foo=$a+$b;     # Незачет

Так же приветствуются пробелы в сложный выражениях в индексe:

$array[ $foo + func( $a, $b ) + $bar ]; # Зачет
$array[$foo+func($a, $b)+$bar];         # Незачет

Сюда же можно отнести и пробелы в вызове функции:

function( $a + $b * func( $a ) ); # Зачет
function($a+$b*func($a));         # Незачет

0.7 Комментарии

После знака комментария "#" следует пробел.
Комментарий начинается всегда с Заглавной буквы.
Строчка комментария должна следовать тем же правилам что и строчка кода:

if ($foo == $bar) {
    # Так НАДО делать
}
if ($foo == $bar) {
# Так НЕ НАДО делать
}

0.8 Слишком длинные строки

Длинные строки лучше разбить переводом строки:

if ($bla_bla_bla_scalar
    && $very_long_scalar
) {
    $foo = $bar;
}

0.9 Точка с запятой и запятая

В перле можно опускать точку с запятой за последним выражением в блоке, но это делать не следует. Это в первую очередь мешает при добавлении строчек в будущем, можно легко не заметить отсутствие точки с запятой и сделать ошибку.
По этим же причинам следует ставить запятую после последнего элемента списка:

%color = (
    'top'     => 'green',
    'body'    => 'red',
    'footer'  => 'black',
);

1.0 Выравнивание по вертикали

Похожий код следует выравнивать по вертикали для лучшей читабельности:

$foo = $bar;
$foo = $bar    ? $penis : $not;
$foo = $penis  ? $bar   : $not;

1.1 Переменные

Переменным принято давать осмысленные названия.
Названия переменным даются всегда(!) в нижнем регистре:

$debug, @debug, %debug # Зачет
$Debug, @Debug, %Debug # Незачет

Исключение здесь это константы которым даются названия только в верхнем регистре ( $DEBUG ).
Несколько слов в название разделяются подчеркиванием:

$var_name_test  # Зачет
$VarNameTest    # Незачет

Массивы принято называть во множественном числе, т.к. работают с ним обычно как со списком ( @names, @dirs ), а скаляры и хеши в единственном ( $name, %config ).

1.2 Именованные итераторы в циклах

Их стоит использовать только если тело цикла короткое:

foreach (@strings) {
    print $_;
}

или короче

print foreach @strings;

В остальных случаях лучше использовать явно указанную локальную переменную:

foreach my $string (@strings) {
    # 200 строк кода
}

############################################

Это далеко не все советы, но самый главный выглядит так:

Попробуйте отключить подсветку синтаксиса и прочитать свой код еще раз.
Лучше всего это использовать с методом "Self_view". Отключить подсветку, сходить попить кофе/чай/пиво, отдахнуть и повторить попытку прочтения кода.

Добавить комментарий


Обновить