Tiszta kód – Az agilis szoftverfejlesztés kézikönyve
Szerző:
Robert C. Martin
Kiadó:
Kiskapu
Kiadás éve:
2010
ISBN:
9789639637696
Oldalak száma:
512
Értékelés:
7
Linkek
A Kiskapu Könyvkiadó gondozásában megjelent Tiszta kód – Az agilis szoftverfejlesztés kézikönyve, helyenként talán túlzottan sarkos kinyilatkoztatásokkal ugyan, de rendkívül hasznos tanácsokat ad a mindennapi kódolási munkához.
Ha valaki csak az Előszó és a Bevezetés részekben leírt alapelveket olvassa el, veszi komolyan, és alkalmazza a mindennapokban, már mondhatja, hogy elindult a jobb fejlesztővé válás rögös útján.
De aki hajlandó tovább olvasni olyan gyakorlati szempontokat tehet magáévá, melyek figyelembevételével megelőzhetőek az előállított kód logikátlanságai, elkerülhetőek a potenciális hibaforrások.
A tiszta kód írásának talán legfontosabb célja, hogy bárki is vegye a keze közé a jövőben az általunk írt forrást, azt érezze, ez a rendszer a keze alá dolgozik, segíti az áttekintést, a megértést. Utat mutat az új belépőnek, hogyan is kell a rendszerhez illő további kódokat előállítani.
Kár, hogy csak és kizárólag Java nyelven megvalósított példák vannak. Emiatt pl. a párhuzamossággal foglalkozó 13. fejezet számomra – PHP fejlesztőként – érdektelen volt. A kifejezett Java5 tanácsok Java ismeret nélkül sokszor zavarosak.
Az általunk írt kód árulkodik arról, mennyire figyelünk oda a részletekre, mennyire figyelünk másokra, mennyire magunkra. Igényes emberek igényes kódot állítanak elő, amiben hatékony a hibák felderítése és javítása. És nem csak az eredeti kódot előállító fejlesztő számára.
■
Szerintem nem számít, hogy
Nem a közölt alapelveket
Csak egy példa: azt javasolja, hogy ne írjunk minden metódushoz JavaDoc megjegyzést, különösen akkor ha az csak a paramétereket és a visszatérési érték típusát sorolja fel, mert a modern IDE-k vagy a dokumentáció készítő alkalmazások a függvény definícióból tudnak dolgozni.
Mindannyian tudjuk, hogy a PHP-ban nem tudod megadni nyelvi elemekkel hogy egy-egy függvényed/metódusod milyen típusú adatot fog visszaadni, illetve nem mindig egyértelmű, hogy milyen típusú paramétereket vár. De minden modern IDE és dokumentáció generátor, PHP esetén, ezekre - a szerző szerint tök felesleges - megjegyzésekre építi szolgáltatásait.
Akár merről is nézzük alapvetően ez a könyv egy "best practice" gyűjtemény. De az egyes tanácsok nem csak az "így jó mert aztmondtam" érveléssel kerülnek megindoklásra, hanem a távolabbi cél, nagyobb jóhoz, a tiszta, átlátható, minőségi kód érveivel. De a használt forma (Java példák) miatt némelyik tanács csak és kizárólag Java környezetben áll meg.
Persze, ez igaz, vannak nyelv
kieg:
PHP egyébként nem a legjobb nyelv arra, hogy Clean Code szemlélettel programozzunk benne. A gond a típusossággal van, az általam használt NetBeans kódkiegészítője sok objektumról nem tudja eldönteni, hogy micsoda. Ez általában abból következik, hogy setterrel állítom be őket kívülről... Jó lenne, ha php-ban lehetne típusokat rendelni az osztályok tulajdonságaihoz...
9 pont :)
Véleményem szerint a Refactoring könyv megkérdőjelezhetetlenül 10-ből 10 pontos! Ám azt érzem, hogy a mű sikere kapcsán két felesleges könyv is született, míg az eredeti könyv hosszú évek tapasztalatait írja le, addig a HTML, illetve az adatbázis könyvek csak közhelyeket durrogtatnak. (nem lepne meg, ha csupán néhány hónap alatt dobták volna őket össze, nem tudom)
E két könyvvel szemben a Tiszta kód viszont nagyon olvasmányos, számtalan hasznos tanácsot tartalmaz. Mindamellett az előzőekhez képest is sok újdonsággal. A most kiadott könyv az eredeti mű második kiadása, emiatt jobban kiemelte a szerző, hogy az előző verzióhoz képest mik változtak a Java nyelvben. Több előzőleg leírt szabályt módosított. Ez valóban PHP-s szemmel nem előny, de véleményem szerint nem is (akkora) hátrány. :)
+1 :-)
Pontozás
10
Azt gondolom nagyon hasznos lesz nekem, és azoknak akik majd egyszer a munkámat folytatják ;)
Szerintem is alapmű, én is 10-est adnék a könyvnek.
Én még csak most kezdtem el
Itt-ott belelapozva nem tudok 100%-ig egyetérteni a szezővel. Mondjuk korábban próbáltam ismerkedni a java-val, így aztán egyáltalán nem zavar, hogy java példákat hozott, de pl. kommentek terén nem feltétlenül fogadnék szót a szerzőnek.
Nekem bejött a comment-es
Sokszor az a baj, hogy a
Az ehhez hasonló eseteknek is
De nekem úgy tűnt, hogy az ennél kevésbé triviális esetek jó részét is feleslegesnek tartja a szerző. Ha félreértettem volna, akkor vegyétek úgy, hogy nem szóltam.
Fenti példa esetében úgy gondolnám, a könyv szerint az isActive() fv./metódus sem igényelne kommentárt (még paramétere sincs, a neve - elméletileg elég beszédes), holott részben dokumentációs céllal, részben arra az esetre, ha évekkel később kell előszednem, érdemes pár szót vesztegetni rá, hogy valójában ki is ő és mi célból keletkezett.
Ráadásul én úgy vettem a könyvet, hogy bár az írója java példákra épít, nem nyelvfüggő amit ír. Akkor meg lásd korábbi pythonos példában a help() használata!
ui: dokumentációs céllal = valamelyik doksi generátor használatához.
Azt hiszem ez akkor megszokás
Is. Amíg friss/jól ismert
Egyébként ma megint előszedtem a könyvet és felfedeztem, hogy pont az a példa, ami úgymond kiverte a biztosítékot, folytatódott kicsit lejjebb és nem úgy lett "kiherélve", ahogy én a fölötte lévő szöveg alapján gondoltam: a Kiskapu-féle (szóval a magyar) változatban a 77. oldalon a 4.4-es ábrán van két komment, vastagon szedve. Az egyik valami olyan, hogy "semmi gond, valaki leállította".
Ezt speciel lényeges infónak tartom, de alatta a "tartózkodjunk az ilyen kirohanásoktól!"-t úgy éreztem, erre is vonatkozik.
Újra megnézve észrevettem, hogy alatta, a javított változatban, ezt a megjegyzést mégis megtartották, csak már nem volt vastagítva.
Más kérdés, hogy tiszta kód címén egy try-catch blokkot átpakolt önálló függvénybe/metódusba, ami egy ritkán lefutó kód esetén nem gond, de ha lényeges a performancia, akkor háromszor meggondolnám, akarok-e még a hibakezelés köré egy újabb réteget pakolni...
eclipse-nek valószínűleg van
klikk a szerkesztő baloldalára a sorszámoknál, és a helyi menüben ott a folding.
Egyébként én komplett example-t is szoktam kommentbe írni html tag-ekkel :D
GeSHi
Ennél rosszabbat nehéz elképzelni, alapvetően a forráskódot nézi az ember, ha pont ott lesz olvashatatlan a minta, akkor az igen komoly probléma.
Én erre a GeSHi kódszínezőt használom, először legyártom a dokumentumot, majd az így legyártott fájlokban kicserélem a mintakódot:
2. a dokumentációban színes a kód
most itt ne arra gondolj,
vim
Köszi.
Ne keressünk ott hibát, ahol nincs! :)
Tehát a kirohanás jelző az a második kommentre vonatkozik, mert valóban az.
Nem kerestem! :-P Ha keresem,
Ha keresem, akkor talán alaposabban megnézem a mögötte lévő kódot is.
Ettől függetlenül, nekem jobban tetszik az a variáció, amikor sok a comment, de eltüntethető, bár olyat eddig sem a netbeansben, sem az eclipse-ben nem találtam, ami kizárólag a kommenteket húzta volna össze, a többi kódot meg békén hagyta volna.
Eclipse-ben Java esetén:
Most nincs kéznél, de ha a
Tankjú!
Hanem?
Több gondolkodást igényel egy jó elnevezés, mint rizsázni arról, hogy miért is, ám végeredmény szempontjából sokkal olvashatóbb a kód, ha jó az elnevezés. Ám ha jó az elnevezés, akkor meg felesleges leírni a kommentben még egyszer ugyanazt.
Nekem a kommentekről szóló
Mindamellett az olyan függvények, amelyeket direkt más fejlesztők felé készülnek (pl api), azon függvényeket azért nem árt magyarázni.
Részben azért, mert a
Részben azért, mert anno én még úgy tanultam, hogy minél több kommenttel lássam el a kódomat, mert öt év múlva nem biztos, hogy emlékezni fogok rá, miért is lett x változó azért x, mert... vagy azért mert ... vagy egyéb okból.
Ráadásképp úgy tűnt a mellékelt példákból, hogy úgy általánosságban szereti a szerző a kommenteket hanyagolni, mondván: épp elég beszédesek a változók, függvények, metódusok, osztályok nevei...
JavaDoc
A felesleges kommenteket tartja rossznak a szerző, majd felhívja a figyelmet arra, hogy sokkal több komment felesleges, mint azt elsőre gondolnánk. Ám vannak jó megjegyzések is. :)
+1
Offtopic :-)
Déry János és Antal Imre vitatkoznak. Valahogy a Tiszta Kód jutott eszembe róluk. :)