Miért van a Java-ban break meg continue utasítás?
"a ciklusoknál ez nincs így, ott nem számítasz össze-vissza break meg continue utasításokra."
Osztán mér nem? Nyelvi elem, számíts rá, hogy találkozni fogsz vele. C++-ban volt az auto, amit soha sehol nem használt senki (11 előtt), a break/continue nem ilyenek.
"Mert mondjuk a kivétel drága?"
Most értettem meg, hogy a futásidőre céloz, hogy költséges a kivétel dobás. Oké, a Java tényleg nem a leggyorsabb, de hogy tervezésileg pont itt akartak gyorsítani?
"A példánál maradva, ha megtalálod amit kerestél a gráfban/fában/valamiben visszadobod kivételként azt a jelzést, hogy megtaláltad és hozzá az adatot is, mert nyilván szükséged lesz rá."
Már ne haragudj, de adatok visszaadására, azaz "üzemszerű" feltételek mellett Exception adatátadásra használni elég gányolásnak tűnik. Ha ilyen a kódod, akkor szervezd külön metódusba a keresést, és return-nel add vissza a megtalált elemet. Exceptiont - ahogy a neve is mutatja - leginkább kivételek, azaz nem várt körülmények felmerülésekor célszerű használni, nem ilyen esetekre.
@20:33: Igazad van.
PONT ez az eset, amire korábban próbáltam utálni, hogy erre használni a kivételeket ROSSZ MEGKÖZELÍTÉS.
Jó, akkor, amit (valósznűleg) hallani akartál:
Dobáld nyugodtan a kivételt, a breaket eszedbe ne jusson leírni, viszont tőlem maradjon távol a kódod.
"Szerintem a kivételkezelés jobban követhető, mint a break meg a continue a ciklusban."
Attól tartok te pályát tévesztettél. A jól kivitelezett kivételkezeléshez tartozik a felelősségi lánc létrehozása is. A te is "módszereddel" ez megoldhatatlan lenne.
Amúgy meg felőlem bohóckodj ahogy akarsz, de ne mutasd meg senkinek a kódodat. Inkább égess könyvet, vagy közösülj halott kisállatokkal, az kevésbé aggasztana.
Mármint, az teszi lehetetlenné, hogy nem vezetem ki a metódus belét fölfelé? Az, hogy nem minden kivételt dob tovább? Dehát ezt hívjuk felelősségi láncnak, hogy ez ott lekezelheti (vagy továbbdobhatja). Az egy dolog az, ha kardoskodik valaki egy megoldás mellett, de aki azt mondja egy OO programnál, hogy tegyek mindent publikussá annál elmentek hazulról.
Pl. három ciklus mélységből az általad preferált módszerrel kibreakelni szerintem követhetetlen, az exception átlátható. A break meg a continue közelebb van a gépi vezérléshez mint bármi a nyelvben. Még jó hogy nem C-ben vagyunk, mert ott a longjump-ot akarnád velem használtatni.
Hánynom kell a hülyeségedtől.
De megnyugtat a tudod, hogy sohasem lesz belőled szoftverfejlesztő. Attól a pillanattól kezdve, hogy valaki fizet akar a munkádért, el leszel kaszálva a baromságaiddal együtt.
Vannak fura megoldások, vannak last-minute hack-ek, vannak gyorsan összerakott programok és vannak junior fejlesztők. De te fiam, te vagy a legrosszabb, mert nem vagy képes fejlődni és tanulni. Akár hányan mondják, hogy a mit csinálsz az hülyeség, csak nyomod itt a dumát, hogy a rendes megoldás neked nem tetszik. Ha képtelen vagy valamit megérteni akkor nem az a megoldás, hogy fikázod, vagy megkerülöd. Remélem időben felnősz, vagy legalább felhagysz azzal a nedves kis vágyálmoddal, hogy te az IT szférában akarsz elhelyezkedni.
Hogy nyugodtan aludj ma este, itt egy kis kódrészlet csak neked:
while (true)
{
if (condition() == false)
break;
}
Ettől a naptól fogva akár hányszor írok egy break-et, vagy continue-t (és elég gyakran szoktam) rád fogok gondolni és jól fogom magam érezni.
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!