Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Brief OO question

by ltp (Beadle)
on Oct 05, 2011 at 01:23 UTC ( #929698=perlquestion: print w/ replies, xml ) Need Help??
ltp has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monks, I did some searching on this question (both internally and using Google) but found nothing definitive. The OO paradigm;
sub method {
    my $self = shift;
Is deeply ingrained in memory of my fingers, however when writing some code for various getter methods, my subconscious predisposition for terseness shortened:
sub get_foo {
    my $self = shift;
    return $self->_bar(baz => 2, frob => 30);
}
To:
sub get_foo { return $_[0]->_bar(baz => 2, frob => 30) }
The question I have is; is using '$_[0]' rather than '$self = shift' considered bad form?

Comment on Brief OO question
Re: Brief OO question
by armstd (Friar) on Oct 05, 2011 at 02:51 UTC

    Not in my opinion, but I rarely do it. My main considerations for doing so are maintainability and performance. If it's a trivial method called often, I'll definitely consider using $_[0] instead of assigning $self first, like your example.

    If it's a method that does considerable or complicated things to "$self", or isn't called very often, then I consider $self more maintainable and will prefer it.

    --Dave

Re: Brief OO question
by Anonymous Monk on Oct 05, 2011 at 06:50 UTC
Re: Brief OO question
by zwon (Monsignor) on Oct 05, 2011 at 11:09 UTC

    It is matter of taste. I usually write

    sub get_it { shift->{it} }
      I also use shift like this if it's a one-liner method, nice and short.
Re: Brief OO question
by chromatic (Archbishop) on Oct 05, 2011 at 16:54 UTC

    You have to weigh the clarity of a named variable versus the efficiency of accessing @_ directly rather than shifting it off. It's a maintenance decision.

    For my purposes, using something like Moose to avoid having to write accessors is worth it.


    Improve your skills with Modern Perl: the free book.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://929698]
Approved by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2015-07-06 05:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls