Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Variable Naming

by rir (Vicar)
on Sep 18, 2002 at 02:48 UTC ( #198711=note: print w/ replies, xml ) Need Help??


in reply to •Re: Re: Tact and the Monastery
in thread Tact and the Monastery

a temporary variable is fine if it can be related to the application in some
way, ... One way to tell is if you can give it a truly meaningful name. If you can't,
see if you can eliminate it.

From early on I have been a believer in good names. The above as inspired me to
raise the level of quality I try to achieve in naming. A good name should
clarify obscure/advanced/complex/efficient 1 code by expressing what the variable
should be.

It is going to be tough to break the habit of using result for return values.


1 Choose one. Define yourself.


Comment on Variable Naming
Download Code
Re: Variable Naming
by admiraln (Acolyte) on Sep 27, 2002 at 17:25 UTC

    Here is a example of trying to learn from our betters and getting confused. The node Randal does it again refers to an article by Randal Schwartz.

    I found this snippet of code that uses a variable name $old_flag.
    sub wanted { return unless -f $_; my $old_flag = -M $_ > 180 ? 'old' : 'new'; $ages{$File::Find::dir}{$old_flag}++; }
    My confusion arises because I would have expected $old_flag to hold a true/false value. Shouldn't this variable be named something like $age_status. This would make it "sound" better to say : $age_status is new or old.

    How should this be handled?

      sub wanted { return unless -f $_; my $old_flag = -M $_ > 180 ? 'old' : 'new'; $ages{$File::Find::dir}{$old_flag}++; }
      Likely this is in a little script and I'd have no
      complaint
      with its expeditious style. Something of the
      thank-goodness-I-got-it-to-work style with which I am quite
      familiar.

      There is certainly a trap of believing variable names.
      Like believing the documentation.

      This looks like code that was refactored because the
      routine name also seems to reflect a time when the author
      was going to use a boolean return here and effect his count
      elsewhere.

      If this was part of a larger body of code...
      My first concerns, assuming it does what is wanted, are:

      • Is 180 magic?
      • Where did %ages come from?
      • Are 'old' and 'new' magical, Hash keys can be a difficult call on magicalness.
      • Is the routine name okay. Maybe a leading underscore.

      The $old_flag might make my list, a meaningless name like
      $var seems better. But it is an issue for only two lines.

      I would consider inlining:

      # untested if ( -f $file) { $age{$File::Find::dir}{ -M $file < 180 ? 'old' : 'new' }++; }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (13)
As of 2014-09-22 15:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (198 votes), past polls