NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Always use shift? (Score:2)
Curiously, Ben Tilly mentioned that at least one company would ding you on a code review for using shift [perlmonks.org].
Don't you think that you've just found a special case? Unless I misunderstood you, you would dislike the following:
my ($self,$user,$pass,$action) = @_;For the that example, it seems clearer to use @_ rather than shift four times. It's clean and concise, though one might argue about the interface.
my ($class, @args) = @_;How would you recommend using shift for that? It's a common idiom and again it's fairly clear. It seems to me that you found an unusual situation where you were bit by @_ not being cleared, but that seems like a bug in the author's code and not necessarily a bad programming practice. Admittedly, you now have the data duplicated in the sub, but unless someone is being stupid and passing huge argument lists, this doesn't seem like such a a problem (unless someone uses the above and then tries to diddle with @_, at which point they deserve their grief).
I guess this is all a long-winded way of saying that I must be misunderstanding you.
Reply to This
Re:Always use shift? (Score:2)
Most things I write lately uses named params anyways. So there is only 1 or 2 shifts (2 if it is an object, for $self and the
Re:Always use shift? (Score:2)
KM wrote: Most things I write lately uses named params anyways.
Hmm... perhaps you might be the target audience for what is arguably my most useless module [cpan.org] (Sub::NamedParams).
Of course, if I ever get the courage to upload Acme::Code::Police [perlmonks.org], then that will qualify as my most useless module. I've been hesitant to do so due to potential hate mail -- not to mention lawsuits :)
Re:Always use shift? (Score:2)
I still have to upload my Acme::ReturnOne and Acme::ReturnZero to be the two most useless CPAN modules.... EVER!!