Thou shalt…

Monet yritykset ovat määritelleet koodauskäytäntöjä, joilla ohjeistetaan ohjelmoijia esimerkiksi muuttujien ja ohjelmamoduulien nimeämisessä. Tiettyjen käytäntöjen sopiminen on varmasti järkevää, koska ne selkeyttävät koodia lisäämällä yhtenäisyyttä.

Staattiset koodianalysaattorit ovat työkaluja, jotka lukevat ohjelmakoodia ja vertaavat sitä määriteltyihin sääntöihin (jotka määrittää edellä mainittu käytäntö). Näitä sääntöjä voi usein olla satoja. Analysaattorit ovat loistavia työkaluja, koska niiden avulla saadaan jäljitettyä muuten vaikeasti havaittavia bugeja – mutta analysaattorin ja koodauskäytäntöjen yhdistelmällä on helppo ampua myös itseään jalkaan.

Otetaan esimerkiksi yksikkötestien kattavuus. Koodauskäytännössä voidaan määritellä, että testien pitää kattaa 90% koodiriveistä, ja analysaattorin avulla on mahdollista varmistua säännön noudattamisesta.

On kuitenkin olemassa koodia, jolle ei ole järkevää kirjoittaa yksikkötestausta*. Ohjelmoija, joka tiedostaa tekevänsä turhaa työtä, ei varmasti ole motivoitunut ja huolellinen. Niinpä näihin ”turhiin” testeihin voi helposti tulla bugeja, jotka hidastavat kehitystä.

Lisäksi tällainen sääntö antaa virheellisen kuvan todellisesta testien kattavuudesta. Otetaan esimerkiksi funktio joka suorittaa kertolaskun. Kattavuussäännön tyydyttämiseen riittää yksi yksikkötesti, esimerkiksi 3*5=15. Kaikki ovat tyytyväisiä, koska testien kattavuus täyttää vaaditun määrän – ja laskin ei mahdollisesti toimi nollalla, negatiivisella luvulla tai desimaaliluvulla kerrottaessa.

Suosittelen että tiimi sopii projektien alkaessa noudatettavista peruskäytännöistä, kuten nimeämisestä. Tähän menee noin varttitunti. Tiukkojen sääntöjen sijaan paras laatu saavutetaan kun luotetaan ohjelmoijien harkintakykyyn ja ammattitaitoon.

Lisäesimerkkejä kauhukäytännöistä löytyy esimerkiksi osoitteesta:
http://programmers.stackexchange.com/questions/1338/worst-coding-standard-youve-ever-had-to-follow

* Esimerkiksi Java-kielessä JavaBeanit, jotka sisältävät läjäpäin triviaaleja settereitä ja gettereitä.

Pasi Kovanen

Pasi Kovanen
Software with Passion.

Liity keskusteluun