Re: elseif statements

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

 



On Tue, May 05, 2009 at 12:12:33PM -0400, tedd wrote:

> At 11:29 AM -0400 5/5/09, Robert Cummings wrote:
>> On Tue, 2009-05-05 at 11:21 -0400, tedd wrote:
>>  > At 10:13 AM -0400 5/5/09, Robert Cummings wrote:
>>
>>  > >Just so we all know why...
>>>
>>>  Yep -- just so we know why:
>>  >
>>>  <http://php1.net/a/if-v-switch/>
>>  >
>>>  It all depends upon how you use the tools at your command.
>>>
>>>  My preference is still valid and I think the code is more readable. 
>>> YMMV.
>>
>> Extra level of indentation, needing to add a break statement for every
>> case. Yours is more verbose and less clear. Forgetting a break statement
>> would lead to a silent bug. Abuse of the switch statement... switching
>> on a constant is not a switch at all. I consider it obfuscated. The
>> techniques you've used are also non-portable to most other languages
>> with a switch construct. Sorry, your attempt to call this good advice
>> fails.

I hate to dogpile on Tedd, who's probably a better coder than I, but
I'll disagree on two points:

1. I have no problems with the execution or readability of elseif. In
fact, I'm grateful for it, since some languages don't have it.

2. I consider Tedd's use of the switch/case construct an abuse. The list
has seen this debate before, and Tedd's way of doing it is *legal*. But
in my opinion, the variable which switch tests should be the only one
tested, as:

switch ($var) {
    case 'alfa':
        ...
        break;
    case 'bravo':
        ...
        break;
}

not:

switch (true) {
    case $var1 == 'alfa':
        ...
        break;
    case $var2 == 'bravo':
        ...
        break;
}

I also appreciate the argument about doing it as it's done in other
languages. Tedd's right, this isn't those other languages. But when you
code in other languages as well as PHP, doing it the same way in all of
them really helps. The lack of semicolon line endings in Python drives
me nuts. Perhaps worse, Python has no switch/case construct. For some
reason van Rossum eschewed this in favor of if/else/elif. Ugh.

Ultimately, it's Tedd's choice, and if the code works, it works. I just
wouldn't do it that way. I agree with Robert-- if I saw code like this I
had to maintain, I'd be slightly miffed.

Paul
-- 
Paul M. Foster

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


[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