oyx (oyx) wrote in ru_perl,
oyx
oyx
ru_perl

Modern::Perl не в почёте?

Куда не посмотрю - нигде особо не юзается, ни experimental/given (хотя вопрос спорный), ни Const::Fast/English (как то рекомендуют в PBP), ни даже fields.
Почему?
Tags: modern perl
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments
given убрали за мутность, Const::Fast не дает особых преимуществ по сравнению с use constant, use fields ваще deprecated
>Const::Fast не дает особых преимуществ по сравнению с use constant

Ну, например, с сигилами сразу понятен тип. Да и массивы/хэши с constant как-то не очень.

>fields ваще deprecated

Есть альтернативы?
Хм, а что, без них - никак? Я лично вообще не очень понимаю, зачем это надо.
say 'OK' if $self->{pint_ok}; # => print_ok

:-)
> Есть альтернативы?

Moose/Mouse
Слишком сурово для модулей уровня одна палка-два струна.
Я не помню точно название, но по моему на РИТ2013 или РИТ2014 был доклад Mail.RU по бенчмаркам различных акцессоров к атрибутам.
там были объекты на базе хешей, fields, Moose, Mouse итп
и Mouse по результатам бенчмарков уделывал в том числе объекты на базе хешей и акцессоров вида

sub name {
my $self = shift;
return $self->{name};
}

oyx

October 17 2015, 10:42:56 UTC 2 years ago Edited:  October 17 2015, 11:01:57 UTC

Дело не в скорости. Всё это удобно контролировать в процессе разработки-отладки, когда скорость не принципиальна. Но если, допустим, модуль всего-то парсит базы какого-нибудь Sypex, и в потребностях у него только Encode да Socket, заставлять вытягивать ещё что-то настолько громоздкое, кажется очень неправильным. Во всяком случае если речь идёт об автономном модуле, который должен уметь работать вне окружения, которое само по себе требует Mo*.

(это если не говорить ещё и о том, что не всё в этой жизни требует совсем уж ОО)
не думаю что Mouse громоздок.
да и зависимость на него имеют такое большое число пакетов что скорее всего если что-то перловое юзается то он уже есть

впрочем если есть желание не иметь никаких зависимостей, то и fields не нужен, в конце концов он тоже модуль
>если есть желание не иметь никаких зависимостей

Такого желания нет, и быть, очевидно, не может. У меня пока ещё цветное зрение, а не чёрно-белое :)
у given еще была одна заморока неприятная - неточность в подсчете стека.

то есть ошибка сгенерированная под ней не всегда четко позиционировалась, приходилось использовать вместо croak confess.
для меня это основная причина неиспользования given была.