Hogyan olvashatóbb a forráskód?
Egymásba ágyazott feltételek és függvény visszatérési pontok viszonylatában melyik példa a szebb, olvashatóbb (nem tudom a kérdés elküldése után mennyi marad a behúzásból)?
1. példa:
if (A_feltetel) {
if (B_feltetel) {
return utasitas1;
} else {
return utasitas2;
}
} else {
return utasitas2;
}
2. példa:
if (A_feltetel) {
if (B_feltetel) {
return utasitas1;
}
} else {
return utasitas2;
}
Mindkét eset ugyanazt eredményezi azonos bemenettel.
Bocsánat, a második példát elírtam.
1. példa:
if (A_feltetel) {
if (B_feltetel) {
return utasitas1;
} else {
return utasitas2;
}
} else {
return utasitas2;
}
2. példa:
if (A_feltetel) {
if (B_feltetel) {
return utasitas1;
}
}
return utasitas2;
Az ?: operátor azért nem jó, mert a belső if-ben végzek más műveleteket is.
Az utasitas1 és utasitas2 ilyesmi (Zend Framework):
return $this->redirect()->toRoute('user', array('action' => 'login'));
Akkor viszont több dologtól függ a móka.
Ezt akkor használjuk, ha az if-ben biztosan végrehajtódó ugró utasítás van, ami befejezi a függvény végrehajtását:
if (condition) {
return expression;
}
return another_expression;
Ezt használjuk, ha nem biztos, hogy a vezérlés majd befejezi a függvény futását:
if (condition) {
if (condition2) return expression;
}
else {
return expression2;
}
Ha a másodikat az első mintájára csináltuk volna meg (azaz nincs else), viszont a condition2 nem teljesül, mindenképp végrehajtódna a return expression2, ami nem jó.
Elb_sztam, a második példám nem helyes.
if (condition) {
if (condition2) return expression;
}
else {
return expression2;
}
A végére mindenképp kell még egy return, mivel ha a condition2 nem teljesül, nem lenne visszatérési érték:
if (condition) {
if (condition2) return expression;
}
else {
return expression2;
}
return expression3;
Nem, működésben ugyanaz mindkettő, amit szeretnék. Talán átláthatóbb ezen a két linken:
pasteb1n.com/t59bfgwb
pasteb1n.com/cNDi9GT7
(az 1 helyett i - nem lehet máshogy bemásolni a linket ?-()
Nüansznyi a különbség. Az első kód rövidebb, viszont a második talán átláthatóbb.
Sztem így a legátláthatóbb:
pasteb1n.com/UDRqEte0
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!