Re: Re: Switch - Case Statement Questions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2012/11/19 Tim Streater <tim@xxxxxxxxxxxxxxxx>

> On 18 Nov 2012 at 14:44, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx> wrote:
>
> >>>>> 2. Using Switch {ALWAYS FIRST CASE!!!}
> >>>>>
> >>>>> //        $boxes = 1;
> >>>>> //        switch ($count) {
> >>>>> //            case ($count > 14):
> >>>>> //                $boxes = 3;
> >>>>> //                break;
> >>>>> //            case ($count > 7 && $count <= 14):
> >>>>> //                $boxes = 2;
> >>>>> //                break;
> >>>>> //            case ($count <= 7):
> >>>>> //            default :
> >>>>> //                $boxes = 1;
> >>>>> //                break;
> >>>>> //        }
>
>
> > To answer Iñigo's comment - the OP's version is very much like an
> > If-ElseIF structure, and nothing like a Switch.
>
> Just so. Perhaps those who are not grasping the point could re-read their
> copy of "The Elements of Programming Style" by Kernighan and Plauger where
> this sort of issue is covered.
>
> See, it's all about expectations. When I worked at SLAC, there was a wise
> guy there who had removed the catalytic converter from his Scirocco and who
> though it clever to race up 280 from San Jose to SLAC at 100mph, sometimes
> slipstreaming behind another idiot doing the same. If I look in my
> rear-view mirror, I expect those I can see to be doing 70mph tops (that's
> what a lot of people did 30 years ago on 280), not 100, and to make
> judgements accordingly. Equally, I have certain expectations when I see a
> switch statement; it trying hard to look like if-elseif-etc is not one of
> them.
>
>
Just a minor rewrite of the original solution

switch (true) {
  case $count <= 7:
    $boxes = 1;
    break;
  case $count <= 14:
    $boxes = 2;
    break;
  default:
    $boxes = 3;
    break;
}


Now -- the idea of "switch" as "select on of some similar cases" in mind":
Is this really breaking any expectation? I think this one is a valid
example, when switch(true) doesn't break the semantic of the
switch-statement.
And if this is already the end of expectations, then (sorry for that) the
expectations are maybe slightly limited :X I don't say "please use
switch(true) wherever possible", but this one is nearly a prototype of a
valid use-case: You have several cases all depending on a single state (the
variable) and all of the same kind "<= constant".


Beside, because it is so extremely simple example, it can become even more
obvious

switch (true) {
  case $count <=  7:  $boxes = 1; break;
  case $count <= 14: $boxes = 2; break;
  default:                 $boxes = 3; break;
}


Guess some may argue about coding styles now, but thats not the questios
here (and anyway: Even coding styles could/should be broken, if it leads to
better code. Use it wisely ;)). And now: This _can_ break any expectation?


By the way, your car-expectation sounds dangerous...



> --
> Cheers  --  Tim
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>



-- 
github.com/KingCrunch

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux