Kezdőoldal » Számítástechnika » Programozás » Hogyan olvashatóbb a forráskód?

Hogyan olvashatóbb a forráskód?

Figyelt kérdés

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.



2014. szept. 7. 20:44
1 2
 1/12 A kérdező kommentje:

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;

2014. szept. 7. 20:47
 2/12 anonim ***** válasza:
33%
return (A_feltetel && B_feltetel) ? utasitas1 : utasitas2;
2014. szept. 7. 21:17
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
Mellesleg oda nem utasítás kell, hanem egy-egy kifejezés, aminek a típusa a függvény visszatérési értéktípusával egyezik meg.
2014. szept. 7. 21:18
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:

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'));

2014. szept. 7. 21:21
 5/12 anonim ***** válasza:

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

2014. szept. 7. 21:27
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:

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;

2014. szept. 7. 21:29
Hasznos számodra ez a válasz?
 7/12 A kérdező kommentje:

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.

2014. szept. 7. 21:34
 8/12 anonim ***** válasza:
Ha itt tartunk úgy lenne áttekinthetőbb, ha a hibakezelést kivennéd az if else-ből. if (!$this->isLoggedIn()) helyett if ($this->isLoggedIn()) {/*return ...*/} és ugyanígy a $form->isValid() helyett !$form->isValid() és return és utána kívül folytatod a helyes lefutását a függvénynek és nem 5 szint mélységben kell olvasni a kódot mert az baromi nehéz.
2014. szept. 7. 22:26
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Jogos. Köszi.
2014. szept. 8. 08:27
 10/12 anonim ***** válasza:

Sztem így a legátláthatóbb:

pasteb1n.com/UDRqEte0

2014. szept. 8. 15:49
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!