U svojoj petogodišnjoj karijeri u Amazonu, Curtis Einsmann, autor popularnog kursa Master the Code review, pregledao je preko 750 pull requestova. Kao tech lead bio je zadužen za pružanje kvalitetnog feedbacka i podizanje standarda kvaliteta koda. Evo njegovih savjeta.
Kao junior developer, bio sam baš loš u code review procesu. Nisam znao gdje da počnem, šta da tražim ili kako da komentarišem. Pružao sam beskorisne komentare vezano za stil i formatiranje. Žurio sam kroz code review ostavljajući klasične “looks good” opaske nakon što bi propustio probleme velike kao kuća. U nastavku slijede savjeti za bolji code review koji će vam pomoći da izbjegnete ove greške.
Shvati zašto je code review važan
Kvalitet koda poboljšava njegovu čitljivost i razumijevanje sistema.To omogućava tvom timu da ubrza svoj rad na razvoju novih funkcionalnosti i donosi dugoročnu dobit.
Code review je takođe odlična prilika za uhodavanje drugih developera. Kvalitetan feedback ubrzava učenje, rast i razvoj svakog pojedinca.
Međutim, code review je i sjajna prilika za učenje za onog ko pregleda kod. Zašto? Zato što svaki developer rješava probleme na svoj način. Pregledanjem njihovog koda, naučićeš nove strategije za rješavanje problema koje možeš iskoristiti kasnije.
Uzmi sebi vremena da naučiš principe programiranja
Poznavanje principa kao što su SOLID, DRY i KISS su temelj za dobar code review. Pročitaj knjigu Clean Code koja će ti dati ideju o tome kako dobar kod treba da izgleda. Odvoji vrijeme da razumiješ važnost odabira prave strukture podataka, ispravne apstrakcije, logičkog imenovanja i kontrole toka programa.
Bitno je upoznati se i sa kritikama na navedene principe i shvatiti da su to dobre smjernice a ne čvrsta pravila. Rade u određenim situacijama, ali ne baš u svim.
Najvažnija pitanja su: da li ovaj kod radi? Da li je lak za održavanje? Hoćemo li ga svi razumjeti za dvije godine?
Uspori kada radiš review
Dobar feedback traži vrijeme za izučavanje koda. Code review zato treba raditi sporo i 100% razumjeti svaku liniju.
Pretvaraj se da postoji skrivena mana u kodu a da si ti detektiv.
Kreni od suštine
Prelistaj pull request da pronađeš glavne dijelove implementacije. Ovo bi mogao biti neki API endpoint ili refaktorisani data access layer.
Počni da čitaš. Zapisuj komentare u hodu, planirajući da ih doradiš kasnije.
Nastavi da čitaš nasumično dok ti kod “ne klikne”
Prati funkcije i pozive. Skači kroz kod da vidiš kako se izmjena u PRu uklapa u širu sliku. Pročitaj izvorni task da dobiješ kompletan konktest problema.
Svaka linija koda je komadić slagalice.
Kod treba pročitati tri,četiri, a nekada i pet puta da se formira jasna slika.
Smisli što više scenarija da kod pukne i provjeri da li su pokriveni
Ovo uradi tek kad postigneš dubinsko razumijevanje koda. Popiši sve moguće edge caseve koji ti padnu na pamet i onda prođi kroz kod da vidiš da li su pokriveni.
Komentariši prijateljskim tonom
Komentar treba da se odnosi na kod, nikada na osobu. Izbjegavaj riječi poput “ti” ili “tvoje”. Ako je nešto sitnica, započni komentar sa “Sitnica”. Formuliši većinu komentara kao pitanja ili prijedloge.
Ostavi bar jedan pozitivan komentar. Ovo nikada ne treba zaboravljati.
Ohrabri kolegu da te kontaktira ako ima pitanja.
Komentariši precizno
Komentare popisuj tokom iščitavanja koda, ali ih sredi tek nakon što potpuno razumiješ i više puta pročitaš kod. Nikada nećeš imati dobre komentare nakon prvog čitanja.
Izbjegavaj komentare bez obrazloženja. Uvijek navedi:
- Gdje vidiš problem
- Zašto smatraš da to može biti problem
- Preporuku za rješenje
Što se tiče formatiranja koda, prepusti to automatskim alatima.
Odobravaj PR kada je dovoljno dobar, a ne kada je savršen
Razumij da perfekcionizam nije vrlina, već mana. Odobravaj kod ako radi i ako je čitljiv.
Međutim, ovo ne znači da trebaš imati niske standarde. Zatraži korekcije čak i ako je nešto sitnica koja može uticati kvalitet rada sistema ili buduće razumijevanje koda i očekuj od kolega da se prema tvojim PRovima odnose na isti način.
Traži feedback na svoj code review
Teško je mjeriti kvalitet koda. Neke od metrika su broj problema u produkciji, brzina razvoja novuh funckionalnosti i brzina kojom novi članovi tima postaju produktivni.
Međutim, sve ih je teško mjeriti. Takođe je teško mjeriti da li si odradio dobar code review.
Zato pitaj druge developere da li je tvoj code review koristan i od pomoći. Iskoristi taj feedback da poboljšaš svoj budući rad i shvati da ćeš postati bolji što češće radiš code review.
Originalna verzija ovog članka objavljena je na Mediumu i prevedena je i prilagođena uz odobrenje.