[Moscow.pm] transform sort function to Schwartzian Transform ??

Alexandr Gomoliako zzz на zzz.org.ua
Пт Сен 9 15:36:16 PDT 2011


On 9/10/11, Ilya Chesnokov <chesnokov.ilya at gmail.com> wrote:
>> Нет, выносить регулярное выражение в константы недопустимо
>
> С этим, кстати, тоже не согласен. Не только допустимо, но и очень
> удобно. Например, в модуле Regexp::Common полно готовых регекспов, к
> которым можно обратиться по имени. А чем мы хуже? ))

Т.е. вы считаете вот это читабельным кодом? Тогда скажите, что будет в $&?

if ($str =~ $RE{num}{real}{-keep}) {
    $number   = $1;
    $whole    = $3;
    $decimals = $5;
}

Или в примере ранее:

next unless $search_str =~ s/$RegExp_parse_name/$4-$months{$3}-$2:$5/;

Если $RegExp_parse_name будет рядом, то ладно, можно еще стерпеть. Но
если он где-то в начале модуля, то это уже совсем плохо.
Пока найдешь, где эта $RegExp_parse_name уже забудешь, в каком
контексте искал. Нужно сразу видеть, что будет в $&, $1, $2 ...

On 9/9/11, Oleg Alistratov <ali at ali.org.ua> wrote:
>> вместо if $a eq 'foo' писать if SOME_A_CONDITION.
>
> сомнительно. Ведь речь о
>
>      if ( $a eq SOME_VALUE )

Наоборот, даже ближе к if SOME_A_B_CONDITION вместо if $a eq 'foo' ||
$b eq 'bar', у вас же в регулярных выражениях есть captures

> И вообще, если литерал встречается в исходниках более одного раза,
> он тут же напрашивается на быть записаным константой.

Само собой, но к регулярным выражениям это не относится.


Подробная информация о списке рассылки Moscow-pm