[Moscow.pm] дефолтные методы объекта и AUTOLOAD

Иван Панченко ivan на stack.net
Чт Мар 29 03:06:13 PDT 2012


29.03.2012 12:22, Orlovsky Alexander пишет:
> Не используйте AUTOLOAD
> 1. Это медленно.
Если запоминать сгенерированные методы, то не так уж медленно.
Это описано в книжке Д.Конвея Object Oriented Perl или, например тут, 
http://habrahabr.ru/post/52532/

> 2. Его использование порождает более сложный код
>
> Из руби, кстати его или уже выпилили или собираются.
>
> 28.03.2012, 13:21, "Nick Knutov"<mail на knutov.com>:
>> Есть ряд объектов, у которых есть заранее известный, но иногда
>> меняющийся [в процессе разработки] список полей, для которых надо писать
>> геттеры вида
>>
>> sub id { my $self = shift; return $self->{id}; }
>>
>> Или с логикой чуть посложнее, но это еще один список полей и полностью
>> одинаковый код, кроме имени поля.
>>
>> Возникла мысль генерить эти методы из заранее определенного списка на
>> этапе, например, загрузки модуля или компиляции кода. perldoc что?
Да, примерно также, как "генерятся" методы by demand в автолоуде, можно 
из погенернить и не в автолоуде, а заранее.

>> Альтернативный вариант - сделать то же самое через AUTOLOAD, вот только
>> в гугле находятся несколько очень разных примеров, как это делается, и в
>> каждом говорится, что примеров есть разные, но вот именно этот способ
>> лучше и избавит от разных проблем и багов. So, как все же это надо делать?




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