Ha kerülendő a ciklusokban a break; utasítás akkor mit használjunk helyette?
Pl ehelyett:
for (let i = 0; i < array1.length; ++i) {
let includes = false;
for (let j = 0; j < union.length; ++j) {
if (array1[i] == union[j]) {
includes = true;
break;
}
}
if (!includes) {
union.push(array1[i]);
}
}
Ezt?
for (let i = 0; i < array1.length; ++i) {
let includes = false;
for (let j = 0; j < union.length && !includes; ++j) {
if (array1[i] == union[j]) {
includes = true;
}
}
if (!includes) {
union.push(array1[i]);
}
}
Mondjuk én úgy szoktam elkerülni, hogy írok rá egy külön függvényt, ami ilyen esetben a break helyett egy return-el kilép.
Tehát alapvetően az nem rossz dolog, ha egy ciklust nem futtatunk végig minden esetben (főleg ha teljesen felesleges mondjuk), de a break helyett többnyire van kifinomultabb megoldás, ha eleve úgy tervezed meg a kódot.
Most egy random példa: egyenlővé teheted i-t azzal a változóval ami azt adta meg, hogy meddig menjen. Ha szükséged van i értékére, akkor értelem szerűen kimented valahogyan.
Amúgy a break egyáltalán nem rossz megoldás, csak kezdőként sokkal kényelmesebb azt használni, mint normális kódot írni, ezért rossz berögződésekhez vezethet. De nagyon is bevett szokás, hogy ha máshogy csak bonyolultabban oldható meg vagy ront a kód olvashatóságán, akkor breaket használunk.
A continue a leginkább kerülendő dolog egyébként, az is kerülhet productionbe, deeeeee nagyon nem jellemző és tényleg csak ha idő szűkőben vagyunk vagy hatalmas sz*pás lenne máshogy megoldani, akkor használjuk.
Programozásra (ha csak nem a NASA-nak dolgozol vagy hasonló kaliberű cégnek) NE mérnöki szemmel nézz. Attól lesz valaki jó fejlesztő, ha a cég igényeinek, céljainak és lehetőségéhez mérten a legjobb megoldással áll elő. Tehát hiába nem megfelelő szokás valamit használni, ha egyszer muszáj, mert pl nincs idő másra, mivel japán szupergyors vonat sebességgel közeledik a deadline felétek, amit már nem lehet tovább tologatni, mert egy hónap pluszt szerezni is a világ nyolcadik csodája volt.
Nem ördögtől való a while ciklus.
for (let i = 0; i < array1.length; i++) {
____let j=0;
____while(j<union.length && array1[i]!=union[j]){
________j++;
____}
____if(j>=union.length){
________union.push(array1[i]);
____}
}
Egészen pontosan mi az érv amellett, hogy elkerüljük a break használatát? Ha annyira nagy baj lenne, nem lenne minden nyelvben implementálva, sőt egy csomó nyelvben létezik a "labeled break" fogalma, ami egymásba ágyazott ciklusok megszakítását teszi lehetővé.
Egy szó, mint száz: időnként valami miatt itt a gyiken felbukkan ez a hülyeség, de semmi nem utal arra, hogy a break elhagyásával jobb minőségű, jobb hatékonyságú kód születne. Mindenki nyugodtan használja.
Valóban nem ördögtől való sem a break, sem a continue.
De ma már vannak sokkal fejlettebb lehetőségek is.
Én például mióta fejlesztőként dolgozom szinte egyáltalán nem használtam sem while-t, sem hagyományos for ciklust, sem break-et, sem continue-t.
Ezeket főleg csak az iskolai példákban, tanulmányaim alatt használtam még az elején.
De annó írtam Python konzolos appokat, ott néha néha jól jöttek ezek, de persze az még nagyon messze állt a clean code elvektől...
#7: Angular, Typescript, Javascript.
Igen, ahogy a 8-as is mondja. Funkcionális programozás.
Főleg map, filter, forEach, find, findIndex. Ezekkel sok mindent meg lehet oldani typescriptben/javascriptben.
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!