in reply to Confusion in naming variables in subroutines

I see nothing technically wrong with your style, nor with the endorsements above.

But I am still impelled to offer a contrarian view.

Look to the long view.

If the script is more than a one_off, one_use package, think of your successor, as you may wish a predecessor had thought of you.

Surely, that hypothetical maintainer, perhaps generations from now, will find it easier to distinguish one $var from another, if you take the minimally non-lazy way of naming the $vars in the sub something like $sub_length, $sub_breadth and $sub_height.

Imagine all that and add a few (not unreasonable, IMO) additional complications; namely, that your script has become a part of your organization's backbone... AND has been "enhanced" by some intermediate generations; that the "bells & whistles" they've added have muddied the waters; and that your sub now resides some hundreds or thousands of lines from its original position of prominence and its original clear relationship to the caller.

  • Comment on Re: Confusion in naming variables in subroutines

Replies are listed 'Best First'.
Re^2: Confusion in naming variables in subroutines
by Anonymous Monk on Jan 24, 2007 at 02:33 UTC

    I will agree with your concept that having the same variable name(s) should not be used as a thumb rule. The confusion cropped-up as I wanted to use the same name in places where it made more sense rather than having different names in each of the subroutines.

    In the below example, I get a session_id and I wanted to use in 3 different ( may be more.. ) subroutines. I felt odd to use different names for session_id in different subs. Hence, I posted the query to the Monks for some help..

    #! /usr/bin perl use strict; use warnings; ... ... # get session id my session_id = get_cgisessionid(); ... ... sub a( $session_id ); ... ... sub b( $session_id ); ... ... sub c( $session_id ); .. sub a { my $session_id = shift; ... } sub b { my $session_id = shift; ... } sub c { my $session_id = shift; ... }