Kezdőoldal » Számítástechnika » Programozás » Ha kerülendő a ciklusokban a...

Ha kerülendő a ciklusokban a break; utasítás akkor mit használjunk helyette?

Figyelt kérdés

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

}

}



2023. jan. 26. 18:40
1 2
 1/11 anonim ***** válasza:
44%

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.

2023. jan. 26. 19:05
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
55%
Ilyen esetekben szerintem semmi gond nincs a breakkel. Most csak azért mész végig a tömbön, mert "kerülendő a ciklusokban a break"? Nem azt mondom, hogy ugorj ki gotoval, de azért na...
2023. jan. 26. 19:28
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
0%

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.

2023. jan. 26. 21:57
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

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

____}

}

2023. jan. 27. 05:36
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
100%

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.

2023. jan. 27. 10:39
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

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

2023. jan. 27. 21:07
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:
#6 - Milyen környezetben és mit fejlesztesz? Kíváncsivá tettél, hogy hol nem kell se while, se hagyományos for ciklus.
2023. jan. 27. 22:28
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:
Funkcionális programozási paradigma szerint a ciklusok kiválthatók magasabb rendű függvények alkalmazásával pl. map, reduce stb. Mi táblázatos adatokat kezelünk pyspark keretrendszerben (afféle data engineering) és szinte sosem használunk loopokat, még kondiciók is funkcionálisan vannak megoldva. Ez pl. úgy néz ki, hogy: when(kondicio, kifejezes1).when(masik kondicio, kifejezes2).otherwise(kifejezes3)
2023. jan. 27. 23:15
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:

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

2023. jan. 28. 07:05
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
#9 - Tény, aláírom. .Net környezetben én is inkább a LinQ metódusait preferálom a ciklusok helyett, így már értelek. Bár meg kell mondjam, hogy valahogy nálunk rendszeresen előfordul, hogy ciklusokat kell írnunk, de valóban, adatfeldolgozás környékén nem gyakran.
2023. jan. 28. 12:16
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!