Kuidas hinnata koodi ilu?

Proekspert annab igal aastal Robotexil välja ilusa koodi auhinna. Miks see ilus kood üldse oluline on? Kas pole nii, et kui robot mängib jalgpalli nagu Lionel Messi, siis võib ta kood olla kole kui öö? Ja mis on üldse kriteeriumid, mille järgi robotite koodi ilu hinnata saab?

Istusime Proeksperdis kogenud koodihindajate ja Robotexil osalejatega maha (Vambola Kotkas! Roland Tepp! Indrek Mägi! Indrek Tamm! Eric Johann Istal!) ja nende mõtted väärivad jagamist.

Kui Barbara Schwarz 9 aastat tagasi ootamatult kiirendama hakanud Toyotas hukkus, ei osatud ka esialgu arvata, et selle põhjustas lihtsalt üks eriti kole kood. Eksperdid tõestasid hiljem, et ameeriklase surma põhjuseks oli aja jooksul spagetihunniku sarnaseks arenenud autotarkvara, mis loojate kontrolli alt oli ammu väljunud.

Enamasti kole kood inimesi ei tapa, kuid ta võib muuta meie elu keeruliseks. Ta on nagu küberrünnak iseenda vastu, mis trollib inimesi ja äriprotsesse. Musta auku kaduv tööaeg, suured kulud, krussis närvid, rikutud kasutajakogemus. Ilus kood võib seevastu teha inimeste elu paremaks, olla majanduslikult kasulikum ja kindlasti ka turvalisem kui kole kood.

Kui nüüd konkreetselt Robotexist rääkida, siis seal ilusat koodi hinnates on meil välja kujunenud juba üsna selged kriteeriumid.

Me otsime koodi, mis oleks loetav nagu hea lühijutt, kus poleks liigseid sõnu ega ridu ning kus iga funktsioon näeb vaeva suurepärase terviku nimel. Otsime koodi, mis ei ole arusaadav ainult masinale, vaid ka teisele inimesele, kes seda tulevikus edasi peab arendama.

Mõned näited:

  • inimkeskse koodi eraldi tükid võiksid mahtuda ühele leheküljele
  • read ei tohiks olla hoomamatult pikad,
  • iga koodijupp võiks teha ühte selget asja,
  • muutujad võiksid olla nimetatud nii, et nende funktsioon oleks koheselt arusaadav
  • kirjavahemärgid võiksid olla lahendatud läbivalt ühtses stiilis.

Ilus kood ei sisalda ajalookihte, milles sumbates keegi ühel päeval võib avastada muistse viikingilaeva jäänused. Avastamisrõõm on muidugi tore, kuid kui me ei tea, mis minevikuloori taga peidus on, siis me ei tea lõpuni ka seda, mida kood teeb ja kuidas seda vajadusel parandada.

Ilus kood sisaldab kommentaare, kuid mitte liiga palju, sest see, kui sa pead juba oma tööd kommenteerima, tähendab tõenäoliselt seda, et kood on liiga keeruline. Ilusat koodi on raske ehitada copy+paste’iga, sest selline buldooserimeetod ei arvesta nüanssidega, millest võib sõltuda väga palju. Lisaks toob kopeerimine endaga kaasa ka vigade paljundamise ohu.

Kindlasti on Sinul oma kogemustele tuginedes veel palju rohkem häid mõtteid, milline peaks olema üks ilus kood. Kõik täiendused ja kommentaarid on oodatud!