Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Style or Clarity?

by FoxtrotUniform (Prior)
on Jun 09, 2004 at 01:54 UTC ( #362603=note: print w/replies, xml ) Need Help??


in reply to Style or Clarity?

if($tmp eq 'F'){ ; # do nothing, spot held for clarity }elsif($tmp =~ /[MICL]/){ ... # do something ... }else{ ... # do something } }

If you have a few different cases, an if/elsif/else chunk like this one is fine, but if you have a lot of possibilities, you should consider building a dispatch table: fill a hash with subrefs and do something like (untested)

$tmp = $some_result; my $handler = $handlers{$tmp}; &$handler(...) if $handler; # might be undef, as in 'F' case

This has the disadvantage of failing silently if you get an unexpected value in $tmp; you could fix it by giving 'F' a do-nothing subroutine and raising an error if $handler is undefined.

--
F o x t r o t U n i f o r m
Found a typo in this node? /msg me
% man 3 strfry

Replies are listed 'Best First'.
Re^2: Style or Clarity?
by periapt (Hermit) on Jun 09, 2004 at 12:48 UTC
    This is a good tip. My thanks to you and dragonchild for suggesting it. Fortunately, my decisions have, until now, been short although I did have a 27 element decision tree that could use a dispatch table.

    Thanks

    PJ
    We are drowning in information and starving for knowledge - Rutherford D. Rogers
    What good is knowledge if you have to pull teeth to get it - anonymous
Re^2: Style or Clarity?
by exussum0 (Vicar) on Jun 09, 2004 at 19:17 UTC
    Another trick if you must must must have the if statements, is to replace the conditional with a subroutine. i.e (assuming F stands for failed)...
    if(failed($status)) { .... } else if(!responseNotFailed($status)) { } else { }

    Bart: God, Schmod. I want my monkey-man.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2020-11-29 23:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?