miért olyan nagy dolog a kódminőség a fejlesztők számára?
a kód minősége azt jelenti, hogy mennyire hasznos és karbantartható a kód: a jó minőségű kód újra felhasználható és fejleszthető; az alacsony minőségű kód nem tart fenn.
a projektek gyakran versenyfutást jelentenek az idővel, és a költségvetés olyan szűk, hogy még néhány kézre számítani a kód írásához kiméra. A sarkok vágása tűnhet a könnyű kiútnak, de hosszú távon nem fog fizetni.
a jól felépített kód, a nyelvi szabályokat követve, sokkal könnyebben olvasható és érthető a különböző böngészők és más fejlesztők számára. Ez is megbízhatóbb, és elkerüli a jövőbeni átdolgozást.
a szoftverprojektek különböző szakaszokban különböző korlátozásoknak lehetnek kitéve (a követelményektől az elemzésig, fejlesztésig, tesztelésig, telepítésig és karbantartásig), ami néha ahhoz vezethet, hogy magát a kódot kezelik a legkevésbé fontos szempontként (funkció a forma helyett). A jó szoftver egyik legfontosabb — és gyakran elfeledett-tulajdonsága azonban a kódminőség.
a kód minősége számos különböző módon mérhető, de a legfontosabb szempontok a következők:
- olvashatóság, következetesség-mennyire könnyű elolvasni és megérteni a kód részeit; ez magában foglalja a kód egyértelműségét, egyszerűségét és dokumentációját.
- kiszámíthatóság, megbízhatóság és robusztusság — a szoftver viselkedésének kiszámíthatónak kell lennie, és nem szabad rejtett hibákra hajlamosnak lennie.
- karbantarthatóság és bővíthetőség — a szoftver javításának, frissítésének és fejlesztésének a lehető legegyszerűbbnek kell lennie, nem pedig eredendően összetettnek.
miért számít a kód minősége?
tekintettel a szoftverfejlesztésben már meglévő szokásos korlátozásokra, miért kell olyan fontosnak lennie a minőségi kód előállítására irányuló erőfeszítésnek?
a minőségi kód írását nem időigényes feladatnak, hanem a szoftverfejlesztés egyik fő céljának kell tekinteni; alapvető befektetésnek kell tekinteni, amelyen a megtérülés szinte azonnal következik:
- a jól olvasható, következetes és dokumentált kód könnyebben áttekinthető, ami sokkal alacsonyabb fejlesztési erőfeszítést eredményez.
- a tiszta és elegáns kód is sokkal könnyebb megérteni, fenntartani és kiterjeszteni.
- a jól megtervezett és alacsonyabb kódbonyolultságot elérő szoftverek szintén nagy előnyökkel járnak a tesztelhetőség és a robusztusság szempontjából (kevésbé hajlamosak az új hibák bevezetésére).
lényegében a magas kódminőség az egyik leghatékonyabb módszer a technikai adósság csökkentésére.
hadd mutassak egy példát
a rossz minőségű kódot általában a következők okozhatják:
- hiánya (vagy elégtelen) kódolási stílus/szabványok.
- nincs / rossz dokumentáció.
- rosszul megtervezett architektúra (a felelősségek szétválasztása nélkül, mint az MVC-ben).
- nagy módszer-komplexitás
a következő példában a módszer célja gondos vizsgálat nélkül nem azonosítható egyértelműen:
- nincs függvénydokumentáció, nincsenek megjegyzéssorok, és nincs látható kódolási szabvány (lásd például a göndör zárójelek és az üres sorok használatában).
- a komplexitás viszonylag magas a különböző műveletek és folyamatok (DB lekérdezések, nézet/kimenet és üzleti logika), több fészkelési szint miatt.
- ellentmondás van a kimenet és a változó interpoláció végrehajtásának módjaiban.
alacsony minősége miatt a kód hajlamos hibákra/hibákra (nem is beszélve a biztonsági aggályokról), és nehéz megfelelően tesztelni.
ezenkívül a szoftver bármilyen módosítása valószínűleg nagyobb fejlesztési és tesztelési erőfeszítést eredményez, és továbbra is potenciális új hibákat vezet be.
a másik oldalon a kódolási szabvány követése és a kód dokumentálása kulcsfontosságú szempont a minőség szempontjából.
ennek véletlenszerű példája látható a következő képen, a Symfony FrameworkBundle vezérlőjének egy részében.php:
a módszer / paraméter dokumentáción kívül világosan láthatjuk, hogy:
- a kód egyszerű és magától értetődő.
- a különböző logikai szakaszokat üres sorok választják el egymástól.
- kevés fészkelő / behúzási szint van, korai visszatérési utasításokkal.
- vannak megfelelő tervezési megfontolások (a felelősségek elkülönítése különböző tárgyak/osztályok szerint).
- a magas kódminőség és egyértelműség miatt az osztály/módszer könnyen tesztelhető és karbantartható, alacsony erőfeszítéssel; a hibák előfordulásának valószínűsége is rendkívül alacsony.
hogyan érhető el a magas kódminőség?
íme néhány tipp:
- megfelelő kódolási (stílus) szabvány kiválasztása a nyelvhez vagy a keretrendszerhez. A PHP esetében például a PSR-2 tekinthető a jelenlegi standard ajánlásnak. Lehet, hogy integrálni lehet a CS fixer eszközöket a fejlesztői környezetbe (lásd php-cs-fixer)
- az osztály -, metódus-és változónevek konzisztenciája az olvashatóság másik fontos tényezője.
- ügyelve arra, hogy megfelelően dokumentálja az osztályokat, tulajdonságokat, módszereket és adott kódblokkokat, ha szükséges, biztosítva, hogy a Megjegyzések egyszerűek, tömörek és hatékonyak legyenek.
- a helyes tervezési minták újratervezése és kiválasztása jó módszer a kód újrafelhasználhatóságának és bővíthetőségének előmozdítására, valamint az alacsonyabb osztály/módszer komplexitás elérésére.
- kódelemző eszközök hozzáadása A CI környezethez, amelyet az új változások egyesítése előtt kell végrehajtani. A PHP-ben a phpmd és / vagy a phpstan olyan eszközök, amelyek figyelmeztetnek a kód esetleges problémáira, és számos különböző konfigurálható szabályt tartalmaznak.
- az automatizált tesztelés szintén kötelező; nemcsak az új hibák megelőzésében segít, hanem annak biztosításában is, hogy megfeleljen a követelményeknek, és megfelelően reagáljon a különböző bemenetekre.
- végül, kihasználva az olyan eszközöket, mint a scrutinizer-ci és a Codacy, hogy teszteljék és megjelenítsék a projekt minőségének világos áttekintését az idő múlásával, és fontos részleteket arról, hogy mi és hol vannak a problémák.
lényeg
fejlesztési módszerektől, nyelvektől, keretrendszerektől vagy eszközöktől függetlenül a magas kódminőség érvényesítése a gyorsabb és egyszerűbb fejlesztés, tesztelés és karbantartás elérésének egyik módja, ami a szoftver tulajdonjogának alacsonyabb költségeit eredményezi.
írta: Jo ons (Jo) | Senior Developer and Team Leader: Cleverti
ezt a cikket eredetileg Cleverti blogjára tették közzé