Rob Coops am Freitag, 25. November 2005 14.13:
> Making the subs shorter will maybe help a little in the speed of processing
> but it will make it a lot more difficult for the person that gets to take
> over the maintanace. When you know what you are doing and why it is easy to
> read it, but when you get a big program written like that and are asked to
> support it... you will go looking for the guy that wrote it and give him a
> good old kick in the .... because of all the headache he cost you.
> So unless this is a very personal script that will not ever be handed over
> to anyone and your memory is good enough to remember what you are doing
> where and why please make sure you do not write subs like that unless you
> are very good at documenting your code as you are writting it.

Hi Rob

[see inline]

> On 11/25/05, John Doe <[EMAIL PROTECTED]> wrote:
> > Lorenzo Caggioni am Freitag, 25. November 2005 11.04:
> > > Attached you can find the code an a input file to try it.
> > >
[...]
> > d) shorten some subs
> >
> > sub fmtCurrencyCodeTEST {
> >        my($xCurr) = "EUR";
> >        return $xCurr;
> > }
> > =>
> > sub fmtCurrencyCodeTEST {'EUR'}
> >
> > sub fmtTLGATTR2_int_natTEST {
> >        my ($xServiceCode,$xInputCDR) = @_;
> >        return $xInputCDR->[20];
> > }
> > =>
> > sub fmtTLGATTR2_int_natTEST {$_[1]->[20]}
> >
> > etc.
[...]

Ok, making subs shorter with less local variables won't improve performance 
significantly. That's why a listed it at the end :-)

Concerning bad maintanability, I don't see much problems in my examples, since 
there is no obfuscating of algorithms and such, but only direct access to the 
arguments - the difference is not very big.

And of course a sub should be documented:
- purpose
- side effects
- parameter description
- description of the return values
- (etc.)

Compare:

# purpose: return currency
# in: --
# out: constant string 'EUR'
#
sub fmtCurrencyCodeTEST {
       my($xCurr) = "EUR";
       return $xCurr;
}

# purpose: return currency
# in: --
# out: constant string 'EUR'
#
sub fmtCurrencyCodeTEST {'EUR'}

In this example, you could even omit the comments, since it's obvious what's 
the purpose of the sub.


Have a look into the perl source; you will find lots of such examples.

greetings,

joe

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to