- gabek blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Kotelezo meme: https://imgflip.com/memegenerator/378140959/Gauss-Wojak
- A hozzászóláshoz be kell jelentkezni
Van egy rakás olyan programozási okosság, ami divatba jött aztán kiderült róla, hogy annyira nem is jó. A példád jól demonstrál egy ilyet, hogy logikusnak tűnik, hogy kell ide egy abasztrakt réteg, amitől majd mennyire egyszerű lesz minden, de valójában meg tök fölösleges, mert az áttérést egyszer kell megcsinálni, és az absztrakt réteg helyett - gondolom - agyatlan search and replace jellegű munkával meg lehet oldani.
A kedvenc ilyen témám a "clean code", ami óriási divat lett, és sokáig szinte senki nem kérdőjelezte meg a létjogosultságát. Aztán meg mégis, például Molly Rocket - Clean code horrible performance: https://www.youtube.com/watch?v=tD5NrevFtbU Ugyanennek a youtubernek van egy másik videója is, ahol egy clean code "iskolapéldát" kb 5 osztály helyett megvalósít 10 sorban. Ami persze "átlathatatlan spagettikód" gondolom egy clean coder szerint :-)
Most éppen ezt nézem, ami viszonylag friss videó ami lazán kapcsolódik: I Interviewed Uncle Bob - ThePrimeTime https://www.youtube.com/watch?v=UBXXw2JSloo Azért érdekes, mert az interjút készítő ember a Molly Rocket-et is interjúvolta teljesítmény témában, és ő is a Clean Code kritikusa. Uncle Bob pedig a Clean Code szerzője (AFAIK).
Egy másik vitákat indító téma az Agile, amiről szintén van szó az előző linkelt videóban. Ugye egyre többen mondják, hogy kiégéshez vezet, és hogy egy csomó esetben egyáltalán nem annyira hatékony, mint szerették volna.
- A hozzászóláshoz be kell jelentkezni
Van egy rakás olyan programozási okosság, ami divatba jött aztán kiderült róla, hogy annyira nem is jó.
Én azt gondolom, hogy ilyen talán nincs is egyáltalán. ;-)
Olyan lehet, amit az okosabbak már előre tudnak, hogy bizonyos szempontok szerint nagyon jó, más szempontok szerint meg nagyon rossz. Köztük pedig ott van minden szint.
Clean code is ilyen, illetve a Clean architecture is.
Ezek pl. akkor nagyon jók, ha sokan dolgoznak egy adott dolgon, nagy méretű, vélhetően többször is kell módosítani, jól tesztelhető kell legyen, könnyen érthető, viszonylag kevés hibával, ...
Ha kicsi kell, egy személy csinálja, hobbi projekt, fontos a teljesítmény, ..., akkor viszont esetleg nagyon rossz.
Illetve egész másként néz ki ugyanaz az okosság egy adott nyelven, mint egy másikon.
Azon is sok múlik, hogyan valósítod meg az adott okosságot.
Ui.:
Clean Architecture with Spring Boot: A good idea?
Egy kis projektet megvalósít hagyományos (common) módon, illetve Clean Architecure-rel (simplified). Leírja mit, hogyan csinált, majd a végén különböző metrikákat mutat: karbantarthatóság, módosítás költsége, fájlok illetve sorok száma. Utóbbi kettő indikálja, hogy mekkora többlet költsége lehet a Clean Arch.-nak az alap fejlesztésnél.
- A hozzászóláshoz be kell jelentkezni
Viszonylag sokat foglalkozom meglévő kódbázisok analizálgatásával, és egyre többre értékelem a lokalitás princípiumát, azaz hogy lehetőleg mennél több dolog legyen egy helyen, hogy lássuk, hogy mi történik. A nagyon rövid metódusokból sokkal több kell, mintha megengednénk, hogy valami hosszabb legyen. És az ugrálás követése plusz mentális erőt igényel. Ezért nem tartom jónak a Clean Code-nak ezt a princípiumát. Azt állítja, hogy egyszerűbb megérteni, ha rövid a metódus. Ez még igaz is, hogy egy hosszabb metódusnál egyszerűbb. De mondjuk 5 rövid metódus már simán lehet bonyolultabb mint egy hosszú. Bár abból a szempontból csak jól járok vele, hogy junioroknak esélye sincs megérteni mi történik, nem kell attól félni, hogy lecserélnek minket :-)
Hasonlóan egyébként a CPU is díjazza a lokalitást, meg a fordítók is, mennél kevesebb az absztrakció annál jobban tudnak optimalizálni.
(A linkelt cikket majd megnézem, egyelőre anélkül reagáltam.)
- A hozzászóláshoz be kell jelentkezni
A rövid éppen azt jelenti, hogy ráférjen egy képernyőre, ne kelljen ide oda mászkálni.
- A hozzászóláshoz be kell jelentkezni
Nem, 5-10 sort szoktak mondani a Clean Code-ban. Tehát egy képernyőnél is kisebb. Azzal egyetértek, hogy _többnyire_ egy képernyőbe már jó ha beleférünk, de ha meg nem, az nem tragédia, sőt előfordul, hogy az a jobb. Ésszel kell dönteni mindig a helyzetnek megfelelően.
- A hozzászóláshoz be kell jelentkezni
Igen, az együvé tartozó dolgoknak sokkal jobb, ha egy helyen vannak. Kiszervezni csak olyan dolgokat érdemes, amik már egy absztrakciós szinttel lentebb vannak, tehát az adott rész megértéséhez nem kell.
Nekem ez a példa tetszik nagyon:
Megkérdezel valakit, hogy: Mit csináltál a hétvégén?
- eset, absztrakció nélkül:
- Reggel 6.30-kor keltem,kimentem a fürdőszobába, nyomtam egy kis fogkrémet a fogkefémre, ... - eset, absztrakcióval:
- Délelőtt játszottam a gyerekekkel, délben az "Éhes vándor" fogadóban ebédeltünk, délután kertészkedtem egy kicsit.
A 2. esetben, ha valami mélyebben érdekli, akkor belekérdez (belemegy) az adott részbe. Ha azon belül is, akkor egyre mélyebbre, de nincs ott minden egyben.
Hasonlóan egyébként a CPU is díjazza a lokalitást, meg a fordítók is, mennél kevesebb az absztrakció annál jobban tudnak optimalizálni.
A CPU igen, de a fordítók az absztrakciót sokkal jobban tudják optimalizálni (méretre, teljesítményre, párhuzamosításra). Ha valamit lekonkretizálsz, akkor nincs akkora mozgástere a fordítónak, mintha rá lenne bízva a hogyan kitalálása. A bzt-s versenyfeladatnál is ez nekem pont előjött a Zig-es megoldásnál, de máshol is láttam ilyet (pl. map, reduce, filter, ...).
- A hozzászóláshoz be kell jelentkezni
Ellenpéldát is hozok, amivel erősítem azt, amit mondasz. ;-)
Mondjuk mond benne pár hülyeséget, mert pl. fogalma sincs mi az a Liskov Substitution Principle, de ha attól eltekintünk, akkor rengeteg valid érv van benne pl. arra, hogy a túlzott absztrakció rossz.
A SOLID-ot is, legalábbis bizonyos részeit, lehet rengeteg esetben jól használni, amivel tesztelhetőbb, olvashatóbb kódot készíthetünk, de ugyanígy, akár ez az ellenkezője is lehet.
- A hozzászóláshoz be kell jelentkezni
A metrikát úgy tervezték meg, hogy azt mérje, ami a Clean Code szerint jó. Ez így nem győz meg, hogy az tényleg jó.
- A hozzászóláshoz be kell jelentkezni
Nem úgy tervezték meg. A fájlok száma, mérete a Clean Architecture esetén nem jó, 50%-kal nagyobb lesz a kód, kb. ennyivel több erőforrás kell az elkészítéséhez.
Épp ez a lényeg! Ha csak egyszer kell megcsinálni és soha többet hozzányúlni, akkor biztosan rossz a Clean Architecture. Akkor is rossz lehet, ha teljesítményre kell optimalizálni, mert szét van forgácsolva az egész. Bizonyos részeit ilyenkor biztosan nem jó úgy csinálni. Nincs olyan architektúra, ami minden esetben jó. Sőt, semelyik principle (okosság) sem jó minden esetben.
- A hozzászóláshoz be kell jelentkezni
4. Minek?
- A hozzászóláshoz be kell jelentkezni