Kezdőoldal » Számítástechnika » Programozás » C# programozók, átálltatok a...

C# programozók, átálltatok a foreach helyett a LINQ használatához? Melyiket preferáljátok?

Figyelt kérdés
2022. máj. 11. 11:07
1 2
 1/11 3 napos mákos lecsó ***** válasza:
67%

Linq minden esetben. Optimálisabbak és olvashatóbbak az algoritmusok mintha foreach-et használnék.


Ráadásul refaktorálásnál úgyis átírják majd Linq lekérdezésre szóval nem tök mind1?

2022. máj. 11. 11:23
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
0%
Én mind2-t szoktam használni. C# mellett PHP, JS amiket még aktívan használok. JS-t még "C#-al közösen" Jint-el.
2022. máj. 11. 11:29
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
52%
Persze, hogy át.
2022. máj. 11. 11:46
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
72%
Nyilván. Ahol lehet, ott linq-t használok.
2022. máj. 11. 14:55
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
56%

Nálunk is volt ebből aranyos kis probléma. A dev ezt írta:

try {

Book[] availableBooks = books.Where(async x => stockService.IsAvailableAsync(x)).ToArray();

}

catch (ApiException ex) {...}

Aztán csak pislogtunk, hogy miért hal meg a program unhandled ApiException kivétellel. LINQ mindenhol ^^ nem pedig csak ott, ahol van is értelme.

2022. máj. 11. 17:42
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
56%
Bocsi, az await-et kihagytam, de azt hiszem, érthető a probléma.
2022. máj. 11. 17:44
Hasznos számodra ez a válasz?
 7/11 3 napos mákos lecsó ***** válasza:
56%
#5 Hogy halt meg unhandled ApiException-nel ha try{}catch(){} blokban elkapta?
2022. máj. 11. 17:46
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:

Na jó, a Where rossz példa volt, csak még véletlenül sem akartam olyan kódot írni, ami hasonlít a cégesre. A List<T>.ForEach(Action<T>) metódusával történt az eset. Ha megfigyeled, egy ilyen lambda kifejezés Func<T, Task<bool>>, ami implicit cast-olható Action<T>-re. Elvégre egy függvényt is meghívhatsz úgy, mint egy eljárást, ha nem érdekel a visszatérési érték.


De pont emiatt a Task nem is lesz await-elve (kontextuson kívül fut), és ha kivétel keletkezik, az egyetlen kivételkezelő, ami elkaphatja, az a CLR, ami leöli az alkalmazást. Hiába van ott a try-catch, nem tudja elkapni, mert a szálak nincsenek szinkronizálva.


Bocs a rossz példa miatt, ami nem is fordulna le (bool helyett Task<bool> ugye), de arra szerettem volna felhívni a figyelmet, hogy jó a LINQ, csak épp vigyázni kell, ha async kóddal együtt használod.

2022. máj. 11. 17:57
Hasznos számodra ez a válasz?
 9/11 3 napos mákos lecsó ***** válasza:
57%
Ja értem, hát ez így elég kaki de egyébként ennek ellenére nem szar a Linq csak érdemes olyannak használni aki érti, hogy működik.
2022. máj. 11. 18:11
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
57%

#5

Na igen, amikor valójában azt sem tudja, mit csinál az ember.


Néha elszörnyülködök, miféle borzadványokat képesek beírni egy lambda expression-be, olyan összetett feltételeket, hogy a hajam égnekáll, képtelenség megérteni.


Egyes válaszolóval is vitatkoznék egy kicsit, mert sokszor egy linq olvashatatlan.


Lehet, hogy te egy sorban leírtad azt az expression-t, de azt nem érti sok fejlesztő, hogy a kódot nem saját magának írja elsősorban, meg nem is a fordítónak, hanem a többi programozónak.


Tehát az érthetőség és jól olvashatóság az kiemelten fontos szempont.

2022. máj. 12. 15:05
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!