C#: Miért ne érdemes használni a goto parancsot?
Nem hasznos az.
Ha goto használatára szükséget érzel, akkor a programod strukturálisan rossz.
Mert az esetek 99,9%-a megoldható nélküle is. Az objektumorientált nyelveknél semmi szükség rá.
Azontúl most ne az ilyen egyosztályos kis helloworld szintű kódokra gondolj, hanem bonyolult rendszerekre. Teljesen átláthatatlanná tenné és a hibakeresés lehetetlen lenne, mert nem tudnád mi hova ugrik. Borzalom.
Tényleg hasznos dolog a goto, de egyben iszonyatosan veszélyes is. Ugyanis feltételek nélkül, ellenőrzés nélkül lehetővé teszi azt, hogy a programod futása egy tetszőleges utasításra ugorjon. Vannak esetek, amikor elkerülhetetlen.
Például, legyen ez a programod szerkezete:
for (...) {
.. for (...) {
.. .. if (kilépési feltétel) ???
.. }
}
utasítás;
A feladat az, hogy a kilépési feltétel esetén azonnal befejeződjön mindkét ciklus végrehajtása és a program futása a külső for cuklus utáni utasításnál folytatódjon. Ezt megoldhatod úgy, hogy a belső for ciklust kiemeled egy függvénybe/eljárásba. De megoldhatod így is:
for (...) {
.. for (...) {
.. .. if (kilépési feltétel) goto ciklus_vege;
.. }
}
ciklus_vege:
utasítás;
Elbasztam. Bocs. Ezt írtam: "Ezt megoldhatod úgy, hogy a belső for ciklust kiemeled egy függvénybe/eljárásba."
Magát ezt a kódrészletet kell kiemelni és return-nal visszatérned.
"Amint azt ezek az esetek is bemutatták, a goto kifejezés használata kiváltható más utasítások használatával."
"Tartsuk szem előtt, hogy a C stílus irányelvei szigorúan tiltják a goto használatát."
"A goto nem, hogy az objektumorientált szemléletet de még a struktúrált programozás fogalmát is sérti."
forrás: nyelvek.inf.elte.hu
# 8/8 Időpont tegnap 21:33
Az IK honlapjánál még a mindmegette.hu is relevánsabb sajnos a témában.
Nekik a struktúrált kód az a Dijsktra-Fóthi féle förmedvény...
Kérdező:
A goto az egyik legveszélyesebb utasítás ilyen téren, tényleg kerüld. Főleg magas szintű nyelveknél. De C/C++-ban is erősen ellenjavallt. Nehezebb debuggolni, nehezebb továbbfejleszteni, nehezebb karbantartani, nehezebb megérteni...
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!