Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^3: $bad_names eq $bad_design

by dpuu (Chaplain)
on Dec 20, 2002 at 23:28 UTC ( #221535=note: print w/ replies, xml ) Need Help??


in reply to Re: Re: $bad_names eq $bad_design
in thread $bad_names eq $bad_design

Yes! It side-steps domain knowledge. Lets expand on this point.

Consider this code:

if ($a->is_xxx_yyy && $b < PPP_QQQ) { ... }
An experienced Perl coder would instantly, subconciously, grok the control-flow within it. Part of this understanding relies on convention, so could be subverted, but just look at the amount of information/expectation we have:
  • $a is an object (the -> operator)
  • is_xxx_yyy is a predicate (starts with word "is")
  • is_xxx_yyy has no side effects (because its a predicate)
  • If is_xxx_yyy is false, then $b is irrelevant (&& short-circuits)
  • PPP_QQQ is a constant (upper-case)
  • PPP_QQQ is numeric (the numeric comparison)
  • $b is numeric (ditto)
  • The rhs has a single boundary (the inequality).
So we'd know that there are 3 paths through the control logic of the if statement, and be able to see how they interact. Bad coders could subvert my expectations (e.g. they could add side-effects to the predicate): but "hard cases make bad law".

Compare this with an abstracted function call:

if (xxx_yyy_ppp_qqq($a,$b))
The perl-brain gleams no information from this. Understanding it relies entirely on the quality of the name of the identifier. And we all know how hard it is to create a really good identifier name.

--Dave


Comment on Re^3: $bad_names eq $bad_design
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2015-08-01 01:50 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 (285 votes), past polls