Kvalitātes mīts: Kāpēc programmēšanas kodu nevar izmērīt ar skaitļiem
Daudzi uzņēmumi vēlas izmērīt savu programmētāju darba kvalitāti, pārvēršot to vienkāršos skaitļos. Tomēr, kā liecina tehnoloģiju pasaules pieredze, koda kvalitāte nav matemātisks vienādojums. Pat ja mēs saskaitām katru rakstzīmi vai rindiņu, mēs neiegūstam patiesu ainu par to, cik labs vai slikts ir izstrādātais risinājums.
Kāpēc skaitļi mūs maldina?
Vēsturiski izstrādātāji ir centušies kvantificēt kodu, izmantojot dažādas metodes:
- Koda rindiņu skaits (LOC): Vairāk rindiņu nebūt nenozīmē labāku vai sarežģītāku darbu. Bieži vien divas rindiņas koda ir krietni labākas nekā divdesmit.
- Ciklo-matiskā sarežģītība: Šī metode skaita, cik daudz ceļu ir caur kodu. Dažreiz vienkārša, bet gara funkcija ir saprotamāka nekā īsa, bet haotiski pārslēgta “if/else” struktūra.
- Testu pārklājums (Code Coverage): Tas parāda tikai to, ka kods ir izpildīts, nevis to, ka tas ir pareizi pārbaudīts.
Goodharta likums: Kad metrika kļūst par mērķi
Ekonomists Čārlzs Gudhārts reiz teica: “Tiklīdz metrika kļūst par mērķi, tā vairs nav labs rādītājs.” Ja programmētājiem maksā par uzrakstīto rindiņu skaitu, viņi sāks rakstīt garu un nevajadzīgu kodu. Ja mērķis ir 100% testa pārklājums, viņi rakstīs testus, kas neko nepārbauda, tikai lai “izpildītu normu”.
| Metode | Ko mēra | Galvenā problēma |
|---|---|---|
| Rindiņu skaits | Koda garumu | Kvalitāti var samazināt, kodu īsinot |
| Sarežģītība | Zaru skaitu | Ignorē koda loģisko jēgu |
| Testu pārklājums | Izpildītos fragmentus | Neizmēra testu kvalitāti |
Kas patiešām svarīgs?
Koda kvalitātes svarīgākās sastāvdaļas ir:
- Nolasāmība: Vai cits programmētājs to sapratīs?
- Domēna valoda: Vai mainīgo nosaukumi atbilst tam, ko tie dara?
- Uzturamība: Cik viegli ir ieviest izmaiņas, nesalaužot visu sistēmu?
Neviena no šīm lietām nav izmērāma ar automātisku rīku. Tās prasa cilvēka pieredzi un kopīgu izpratni par mērķi. Metrikas var būt noderīgas kā indikatori, lai pamanītu problēmas, taču tās nekad nedrīkst aizstāt profesionālu koda apskati (Code Review) un kritisku domāšanu.
Kā domā Tu - vai mēs pārāk daudz paļaujamies uz “sauso” statistiku programmēšanā, vai arī tā palīdz saglabāt kārtību lielos projektos?
Iezīmē tekstu un spied ziņot par kļūdu.