Foto av Jan Västernäs

Hur genomför man kodgranskning bäst?

// Jan Västernäs

Att regelbundna kodgranskningar har ett stort värde håller nog de flesta med om. Det gör att avvikelser från olika typer av riktlinjer blir mindre och att kvaliten ökar. Samtidigt tar det tid och resurser att genomföra. Hur får man bäst effekt av den investering som görs ?

En vanlig metod är att efter en iteration tar man den kod som checkats in, granskar den, skriver protokoll och har ett möte med granskarna/granskaren och alla utvecklare och går igenom de synpunkter som kommit. Fördelarna är att man uppnår en gemensam syn på hur koden skall se ut. Nackdelarna är att

  • feedback kommer sent i förhållande till när koden skrevs, 1-7 veckor senare beroende på iterationens längd och hur snabbt gransknngen är klar. Innebär att det hunnits skrivas mycket och blir en hög tröskel att ändra.
  • det är mycket jobb att granska all kod producerad i en hel iteration. Innebär att det är frestande i en pressad situation att prioritera bort. (och när är projektet inte pressat ?)

Vi har i det projekt jag jobbar i kompletterat denna typ av granskning med mycket lättviktig variant. Innan man checkar in en kodändring ( stor eller liten ) så ber man en kollega som sitter nära att granska den. Versionshanteringssystemet kräver att man anger vem som granskat koden, annars går det inte att checka in.

Erfarenheterna av detta sätt att jobba är mycket goda.

  • Feedback kommer omedelbart och alla synpunkter beaktas/ändras omedelbart.
  • Kompetens om olika delar av systemets sprids
  • Ingen risk för att någon känner sig utpekad i en stor grupp
  • All kod granskas fortlöpande och det blir verkligen av
  • Det blir ofta någon ändring efter en granskning, väldigt många buggar har avlivats redan innan de lärt sig stava till “driftstörning”

Så om du inte jobbar på detta sätt redan kan jag rekommendera att testa det. Tror det bästa är att ha några stormöten i början av ett projekt för att hitta en gemensam värdegrund att stå på och sedan köra hårt med kollegie-granskning.

Kommentarer