Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
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.

Replies are listed 'Best First'.
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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2017-06-22 23:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (531 votes). Check out past polls.