Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

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
Node Status?
node history
Node Type: note [id://632303]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2018-06-25 01:06 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.