Eventuali duplicati:
is “else if” faster than “switch() case” ?"se" contro "switch"
Ho incontrato un sacco di situazioni ultimamente dove ho condizionali molto semplici e hanno bisogno di espandersi flusso applicativo. I "semplici" mezzi di realizzare quello che sto facendo è solo una pianura vecchio if
/elseif
dichiarazione:
if($value == "foo") {
// ...
} elseif($value == "bar") {
// ...
} elseif($value == "asdf" || $value == "qwerty") {
// ...
}
... ma sto considerando anche qualcosa di simile:
switch($value) {
case "foo":
// ...
break;
case "bar":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Questo sembra un po 'meno leggibile, ma forse è più performante? Tuttavia, quando ci sono sempre più "o" espressioni nella condizionale, sembra che l'istruzione switch è molto più leggibile e utile:
switch($value) {
case "foo":
// ...
break;
case "bar":
case "baz":
case "sup":
// ...
break;
case "abc":
case "def":
case "ghi":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Ho visto anche le opzioni in cui il flusso di codice è ramificata utilizzando gli array e funzioni:
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();
}
Quest'ultima opzione ha anche presumibilmente il vantaggio di essere distribuibile su più file, anche se è piuttosto brutto.
Quale ritiene abbia i maggiori vantaggi con il minor numero di compromessi in termini di prestazioni, leggibilità e facilità d'uso?
uso di 'switch' è migliore nel tipo di situazione è stato specificato. – Sarfraz
Le prestazioni non sono nemmeno un fattore decisivo. Scrivi prima il codice leggibile, poi il profilo e ottimizza se necessario in seguito. –
Duplicato di un duplicato, ecc. Http://stackoverflow.com/questions/3387758/java-case-statment-or-if-statement-efficiency-perspective –