Re: IF or SWITCH

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

 



At 7:48 PM -0700 4/5/06, Ray Hauge wrote:
Hello World! wait, not coding... (sorry, long night)

Okay, I finally finished hashing out all the logic for a very complex set of
rules to determine what "type" an application should be set to.  I won't bore
you with the details of it, but the question is...

I have 57 if/elseif/else statements because of all the different criteria.  Is
it considered better programming practice to use if/elseif/else statements
over a switch(true) case (true && false || true || false) syntax?

Basically, I'm not too happy with the readability of the code, but I'm afraid
that at this point there's not much I can do...

code snippet:

if($numFFELP > 1 && count($FFELP_Lenders) > 1 && $numFFELP == $numTotal){
	$retVal = array(TRUE, 'A');
}elseif($numFFELP > 0 && $enumFFELP > 0 && count($FFELP_Lenders) > 1 &&
$enumFFELP + $numFFELP == $numTotal){
	$retVal = array(TRUE, 'A');
}elseif($numFFELP > 0 && $numCONS > 0 && count($FFELP_Lenders) > 1 &&
$numFFELP + $numCONS == $numTotal){
etc.

Any suggestions?

Switch.

Regardless of speed, I find that switch is much easier to write and debug than if/elseif -- which, regardless of my shortcomings, I never use.

I can't stand using elseif's and have never ran into a problem that required their use -- can anyone show me one where a switch would not do just as well, if not better?

As for the above, what's wrong with the following?

$who_cares = 1;
switch ($who_cares)
{
case $numFFELP > 1 && count($FFELP_Lenders) > 1 && $numFFELP == $numTotal:
$retVal = array(TRUE, 'A');
break;

case $numFFELP > 0 && $enumFFELP > 0 && count($FFELP_Lenders) > 1 &&
$enumFFELP + $numFFELP == $numTotal:
$retVal = array(TRUE, 'A');
break;
...

}

OR

switch ($numTotal)
{
case $numFFELP > 1 && count($FFELP_Lenders) > 1 && $numFFELP:
$retVal = array(TRUE, 'A');
break;

case $numFFELP > 0 && $enumFFELP > 0 && count($FFELP_Lenders) > 1 &&
$enumFFELP + $numFFELP:
$retVal = array(TRUE, 'A');
break;
...

}

<running for cover>
tedd
</running for cover>
--
--------------------------------------------------------------------------------
http://sperling.com

--
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