Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
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
Replies are listed 'Best First'.
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 browsing the Monastery: (13)
As of 2015-07-28 22:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (260 votes), past polls