[Catalyst] Re: Private Chained Actions?

Ash Berlin ash_cpan at firemirror.com
Sun Jun 22 19:17:11 BST 2008


On 22 Jun 2008, at 18:56, Aristotle Pagaltzis wrote:

> * Jonathan Rockway <jon at jrock.us> [2008-06-22 15:35]:
>> * On Fri, Jun 20 2008, Aristotle Pagaltzis wrote:
>>> That’s even uglier. Imagine there isn’t just `hello` but half
>>> a dozen other methods all sharing the same setup. So the setup
>>> code is one or two screens down the source file. Now when you
>>> look at `hello` you have absolutely no indication whatsoever
>>> that there might be other code running before it.
>>
>> I guess. But this is Perl, there's never any indication of
>> anything. There's no indication that my function is receiving
>> arguments of a particular type.
>
> Except, y’know, the code in the method body that’s *right there*.
>
>> There's no indication that my function throws exceptions.
>
> I hope you’re not using exceptions for standard control flow.
>
>> There's no indication that "use Foo" has side effects.
>
> Yes, and that causes no end of intermittent trouble. Ovid had
> some recent posts on use.perl about getting bitten hard.
>
>> Even in Catalyst, there is a ton of implicit behavior. There is
>> no indication that begin/end/auto applies to my action (at
>> least until the action runs).
>
> Except, method modifiers are explicit, not implicit – just
> defined at a distance, the way you wrote it. In contrast, if you
> use Catalyst you know that there may always be begin/end/auto
> actions.
>
> I mean, if you have to write out your intent to modify a method
> anyway, why not also put that next to the code that will actually
> be affected?
>
> I recommend Schwern’s recent “Skimmable Code” talk.
>
> Note well, I’m not arguing against method modifiers in general.
>
> Regards,

FWIW I also think that the method modifiers makes it harder to skim  
the code, since most of the time you find the end action then look up  
the chain to see what is happening (at least I do) - method modifiers  
make this a much harder thing to find.

-ash




More information about the Catalyst mailing list