oyx (oyx) wrote in ru_perl,
oyx
oyx
ru_perl

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

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

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 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 1 year ago Edited:  October 17 2015, 11:01:57 UTC

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

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

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

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

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