Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

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?

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
    with its expeditious style. Something of the
    thank-goodness-I-got-it-to-work style with which I am quite

    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

    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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://201273]
[nysus]: so, I can't seem to post to perlmonks
[nysus]: I just get a "preview" button but no way to submit

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2017-12-15 03:22 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (416 votes). Check out past polls.