Duplicate possible:
is “else if” faster than “switch() case” ?"si" par rapport à "switch"
J'ai rencontré beaucoup de situations ces derniers temps où j'ai conditionals très simple et besoin de branche flux d'application. Les « simples » moyens d'accomplir ce que je fais est juste une déclaration ancienne if
/elseif
simple:
if($value == "foo") {
// ...
} elseif($value == "bar") {
// ...
} elseif($value == "asdf" || $value == "qwerty") {
// ...
}
... mais je considère quelque chose comme aussi:
switch($value) {
case "foo":
// ...
break;
case "bar":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Cela semble un peu moins lisible, mais peut-être c'est plus performant? Cependant, quand il y a de plus en plus « ou » expressions du conditionnel, il semble que l'instruction switch est beaucoup plus lisible et utile:
switch($value) {
case "foo":
// ...
break;
case "bar":
case "baz":
case "sup":
// ...
break;
case "abc":
case "def":
case "ghi":
// ...
break;
case "qwer":
case "asdf":
// ...
}
J'ai aussi vu des options où le débit de code est ramifié en utilisant des tableaux et fonctions:
function branch_xyz() {/* ... */}
function branch_abc() {/* ... */}
function branch_def() {/* ... */}
$branches = array(
"xyz"=>"branch_xyz",
"abc"=>"branch_abc",
"def"=>"branch_def"
);
if(isset($branches[$value])) {
$fname = $branches[$value];
$fname();
}
Cette dernière option a aussi sans doute l'avantage d'être distribuable dans plusieurs fichiers, mais il est assez laid.
Selon vous, quels sont les avantages les plus avantageux en termes de performances, de lisibilité et de facilité d'utilisation?
utilisant la méthode 'switch' est mieux dans le genre de situation que vous avez spécifié. – Sarfraz
Les performances ne tiennent même pas vraiment compte de cela. Ecrire le code lisible d'abord, puis profil et optimiser si nécessaire par la suite. –
Dupliquer d'un doublon, etc. http://stackoverflow.com/questions/3387758/java-case-statment-or-if-statement-efficiency-perspective –