DRY-, KISS- ja YAGNI-periaatteet

elo 11, 2021
admin

Nämä ovat kolme periaatetta, joista jokaisen kehittäjän tulisi pitää huolta, koska niissä on kyse puhtaasta koodista. Tässä artikkelissa ymmärrämme, mitä kukin niistä tarkoittaa.

DRY-periaate

DRY tarkoittaa Älä toista itseäsi. Kirjassa ’The Pragmatic Programmer’ (Pragmaattinen ohjelmoija) näemme tämän määritelmän DRY:lle:

Jokaisella tiedolla on oltava yksi ainoa, yksiselitteinen ja arvovaltainen esitys järjestelmässä.

Tämä tarkoittaa sitä, että päällekkäistä koodia ei saa olla. On helpompi ylläpitää koodia, joka on vain yhdessä paikassa, koska jos koodissa pitää muuttaa jotain, se pitää muuttaa vain yhdessä paikassa. Jos sama koodi on kahdessa tai useammassa paikassa, on erittäin todennäköistä, että koodi muuttuu ajan mittaan erilaiseksi, ja kun näin tapahtuu, järjestelmään tulee helposti virheitä. Monistettu koodi tekee koodista myös monimutkaisempaa ja tarpeettoman suurta.

Sinun ei myöskään pitäisi kirjoittaa moniselitteistä koodia. Luokillasi, muuttujillasi ja funktioillasi on oltava tietty nimi, ja niiden nimen on vastattava niiden vastuuta. Jos sinulla on funktio, sinun pitäisi tietää, mitä funktio tekee vain lukemalla sen nimi, ilman että sinun tarvitsee lukea sen sisällä olevaa koodia.

Kirjassa ’The Pragmatic Programmer’ näemme myös, että:

DRY:ssä on kyse tiedon, tarkoituksen päällekkäisyydestä. Kyse on saman asian
ilmaisemisesta kahdessa eri paikassa, mahdollisesti kahdella täysin erilaisella tavalla

Se tarkoittaa, että kyse ei ole vain koodin kopioimisesta ja liittämisestä (copy and past) – kyllä, sekin kuuluu asiaan – vaan menee sitä pidemmälle. Kyse on myös erilaisesta koodista, joka tekee saman asian. Ehkä sinulla voi olla erilaista koodia kahdessa tai useammassa paikassa, mutta ne tekevät saman asian eri tavoin, myös tätä tulisi välttää.

KISS-periaate

KISS on lyhenne sanoista Keep It Simple, Stupid. Tämä periaate kertoo siitä, että tee koodistasi yksinkertaista. Turhaa monimutkaisuutta kannattaa välttää. Yksinkertaista koodia on helpompi ylläpitää ja helpompi ymmärtää.

Voit soveltaa tätä periaatetta koodin suunnittelussa ja toteutuksessa. Sinun tulisi poistaa päällekkäistä koodia, sinun tulisi poistaa tarpeettomat ominaisuudet, älä käytä tarpeettomia muuttujia ja metodeja, käytä muuttujien ja metodien nimiä, jotka ovat järkeviä ja vastaavat niiden vastuualueita, ja aina kun se on mahdollista, noudata tunnettuja koodinkehitysstandardeja. Sinun tulisi myös erottaa luokkiesi vastuualueet ja projektin kerrosten vastuualueet toisistaan.

Joskus sinun ei tarvitse toteuttaa jotain uutta tarpeisiisi, vaan voit yksinkertaisesti hyödyntää käyttämäsi ohjelmointikielen ominaisuuksia. Tätä varten on hyvä tuntea sen ohjelmointikielen ominaisuudet, jolla työskentelet.

Jos työskentelet koodissa, joka on jo toteutettu, ja näet jotain, mikä ei ole tarpeellista tai voisi olla yksinkertaisempaa, kannattaa harkita sen refaktorointia.

YAGNI-periaate

YAGNI tulee sanoista You Ain’t Gonna Need It. Se on periaate ohjelmistokehitysmenetelmästä Extreme Programming (XP). Tämän periaatteen mukaan ei pidä luoda ominaisuuksia, jotka eivät ole todella tarpeellisia.

Tämä periaate on samanlainen kuin KISS-periaate, kun molemmat pyrkivät yksinkertaisempaan ratkaisuun. Ero niiden välillä on se, että YAGNI keskittyy tarpeettoman toiminnallisuuden ja logiikan poistamiseen, ja KISS keskittyy monimutkaisuuteen.

Ron Jeffries, yksi XP:n perustajista, sanoi kerran:

Toteuta asiat aina silloin, kun oikeasti tarvitset niitä, älä koskaan silloin, kun vain ennakoit, että tarvitset niitä.

Se tarkoittaa, että sinun ei pidä toteuttaa toiminnallisuutta vain siksi, että luulet tarvitsevasi sitä jonain päivänä, vaan toteuta se juuri silloin, kun todella tarvitset sitä. Tekemällä näin vältyt käyttämästä aikaa toteutuksiin, jotka eivät edes olleet tarpeellisia, eikä niitä ehkä koskaan käytetä.

Johtopäätös

Tämä periaatteiden noudattaminen, antaa sinulle mahdollisuuden kirjoittaa parempaa koodia. Muista, että puhdasta koodia on helpompi käyttää, se on helpompi ymmärtää ja se säästää varmasti aikaasi, kun sinun täytyy muuttaa tai toteuttaa jotain. Vältä päällekkäisen koodin käyttöä, yritä pitää koodisi mahdollisimman yksinkertaisena ja toteuta ominaisuuksia vain silloin, kun se on todella tarpeen.

Vastaa

Sähköpostiosoitettasi ei julkaista.