Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: Practical example of "Is Perl code maintainable"

by cLive ;-) (Prior)
on Aug 13, 2007 at 20:22 UTC ( #632303=note: print w/replies, xml ) Need Help??

in reply to Practical example of "Is Perl code maintainable"

I agree with tye - does look like golf :)

There comes a time when you have to balance this stuff out in a shared environment. For example, I've been optimising stuff perhaps too far:)

sub set_attr { # 0 self # 1 attr # 2 value $_[0]->{$_[1]} = $_[2]; } sub get_attr { # 0 self # 1 attr $_[0]->{$_[1]} }

What has come from this though is that I'm moving towards a more consistant @_ usage, and then passing the script through a source filter before publishing. IE, if the sub doesn't amend any arguments unexpectedly, I write code that shifts the args

sub set_attr { my $self = shift; my $attr = shift; my $value = shift; $self->{$attr} = $value; }

but, before publishing, I run the code through a source filter to change it to:

sub addNums { # 0 self # 1 attr # 2 value $_[0]->{$_[1]} = $_[2]; }
If the source filter may cause confusion by amending any of the arguments, I use @_ explicitly:

sub capitalize { my ($word) = @_; $word = "\u$word"; return $word; }

I personally like using subs that tweak args direct:

sub capitalize { $_[0]="\u$_[0]"; }

But I find that most people feel more comfortable with:

$word = captitalize($word);



I'm sure there are some disadvantages to my approach, but as long as I keep it consistent, document the source filter and ensure I run tests before and after source filter is applied, I think I'm OK :)

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://632303]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2021-07-28 18:57 GMT
Find Nodes?
    Voting Booth?

    No recent polls found