25.08.09 15:57, Vany Serezhkin написав(ла):
Привет.

Я так внимательно посмотрел ... и что то мне этот пример не нравится,
вот идея нравится, а сам пример - странный.
если у нас возникает желание сделать из my $object =Class->new;  my
$object=Class->new->get_part; - То что то настолько неправильно в нашей
разработке ... что пряма ой.
А вот придумать корректный пример, когда действительно индиректный вызов
мешает рефакторингу ... у меня не получилось.
А если нет примеров использования, может и ну его ?

С другой стороны, вопли о том, что эта штука мешает принту.
Мне всегда не нравилась функция принт, с одной стороны она парсится
отдельным механизмом.
Это единственная функция с выделенным под неё парсером. И изза этого
невозможно переопределить CORE::print.
Вопрос, принтов в хэндлер конечно больше, но !
Конфликт случается именно изза такого поведения принта, а не изза
индиректных вызовов.
Индиректные вызовы изначально расчитывались на красивое написание
конструкции new Class.
Это нигде не мешает.
И я не понимаю эту бестпрактику по отношению к контруктору.


sub serialize {
     my $obj=shift;
     warn 'Serializing '.Dumper($obj);
     return $obj->serialize;
}
my $serizlized=serialize $object - Это довольно правильная конструкция,
которая позволяет мне привнести миксин глобально ко всем классам.
Надо только понимать, что это для дебажных целей.
Кстати, пример тоже очень плохой =)

Есть еще другой довод, что типа такой код рефакторить не удобно.

$x = new Class::X;

сложнее превратить в

$x = Class::X->new->xxx->yyy;

Мне кажется, здесь как раз более наглядно получается, если добавить скобки:

$x = (new Class::X)->xxx->yyy.

Сразу видно, что X нужен лишь временно.

Почему временно? Это chained методы, которые делают дело и возвращают $self :)


--
Andrew Shitov
______________________________________________________________________
[email protected] | http://shitov.ru
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org






Пример:
my $json = Май::Обjект->new->with_utf8;
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить