Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Variable Naming

by admiraln (Acolyte)
on Sep 27, 2002 at 17:25 UTC ( #201273=note: print w/ replies, xml ) Need Help??


in reply to Variable Naming
in thread Tact and the Monastery

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?


Comment on Re: Variable Naming
Download Code
Re: Re: Variable Naming
by rir (Vicar) on Sep 27, 2002 at 20:59 UTC
    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://201273]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2014-08-20 23:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (125 votes), past polls