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

Alexandr Gomoliako zzz на zzz.org.ua
Пн Сен 12 07:59:43 PDT 2011


On 9/12/11, Denis Evdokimov <evdokimov.denis at gmail.com> wrote:
> Функция-парсер, которая содержит одну регулярку.

> Можно, но зачем. Почему не воспринимать регулярку, как функцию?

> Чем отличается
> my($aa, $bb, $cc) = $str =~ RegExp_parse_bla_bla_bla;
> от
> my($aa, $bb, $cc) = parse_bla_bla_bla($str);

Ничем. Оба нечитабельно. Естественно не нужно выносить одну регулярку
в фукнцию, но и в константу тоже. Пишите сразу читабельно:
my ($aa, $bb, $cc) = $str =~ /(aa)(bb)(cc)/;

Выносите в парсер все, что касается парсера.
Регулярное выражение не имеет смысла, если оно не в контексте, как и условия.

Т.е. вот как-то так:
sub foo {
    ...
    my ($aa, $bb, $cc) = $str =~ /(aa)(bb)(cc)/;

    # other parser-related stuff ...

    return $your_fully_parsed_data_structure;
}

> С мой мочки зрения - ничем.
> Только $str =~ RegExp_parse_bla_bla_bla несколько быстрее.

Вот не надо только про быстрее.
Высокая производительность либо нужна, либо нет. Если нет, то не надо
портить читабельность, если да (когда да), то перепишите в XS.

Все та же premature optimization.


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