Verovatno si u oglasima za posao naišao na pojam code review (pregled koda) kao sastavni deo poslovnog dana developera, jer kompanije često postavljaju takvu aktivnost u opisu, ali ti ne kažu šta to obuhvata i šta se od tebe kao potencijalnog kolege očekuje, koje su aktivnosti rada u takvoj kompaniji.Od kompanije zavisi potreba za code review-om, odnosno od celokupnog tima i procesa izrade, ali u određenim slučajevima ovaj vid provere pojednostavljuje proces razvoja softvera, jer međusobni pregled sa kolegama programerima omogućava ispravke u hodu, pre puštanja softvera u produkciju.
Softver izrađuju ljudi, a greške su sastavni deo života, pa je očigledno zašto postoji potreba za proverom koda kao deo svakodnevnice u softverskom svetu.
Značaj code review-a
Bez obzira što postoje različiti alati za testiranje, prilikom inspekcije ili pregleda pišu se "recenzije" koje unapred štede vreme, pojednostavljujući razvojni proces i drastično smanjuju obim posla na duže staze, jer će se u nekom momentu od timova zahtevati određeni vid garancije kvaliteta. Code review štedi novac, u smislu što se mogu "uhvatiti" greške u ranoj fazi izrade i ispraviti ih u hodu pre puštanja aplikacije "u život".
Cilj je, između ostalog, da se obezbedi:
- Dobro dokumentovan softver bez nedostataka i "rupa"
- Softver koji je u skladu sa određenim pravilima i standardima kodiranja
- Učenje i širenje znanja među članovima u timu
- Održivost
- Sigurnost
- Kompletne unit testovi
- Prilagodljivost
U nekim slučajevima, code review je način da se brzo uključe u proces i novi članovi tima, gde je potrebno njihovo "bezbolno" prilagođavanje samom procesu izrade.
Kako izgleda code review?
Code review uključuje jednog ili više programera sa iskustvom (obično nisu uključeni u projekat ili bar jedan od njih nije), da pregledaju izvorni kod (source code) i daju povratne informacije (kako negativne, tako i pozitivne) autorima koda. Tako se dobijaju objektivne informacije o čitljivosti i održivosti koda, pogotovo onima koji nisu pisali softver.
Pregled koda se odvija u svim fazama razvoja, osim kod malih projekata i aplikacija, kao što su mali demo softveri koji služe za određenu namenu, pa se prilikom završetka odstrane. Najčešće se dovodi u pitanje potreba u završnoj fazi izrade, kada svi pokušavaju da ispoštuju zadate rokove, pa je potrebno na vreme dosledno obaviti sve testove i preglede, kako se ne bi kasnilo sa isporukom, a i osiguralo eliminisanje bagova iz aplikacije.
Na autorima je zadatak da spreme code review koji je lako pregledati, gde obim i veličina nisu preveliki, kako ne bi oduzimao vreme pregledaču. Promene bi, ako ih ima, trebalo da budu male, brze, dobro definisane i dokumentovane.
Ako pregledač mora izvršiti suštinske promene na više od 5 datoteka ili mu treba više dana za proveru i editovanje, tad je potrebno uključiti više programera koji će pregledati kod, jer je obim pregleda veliki. Pre slanja na review, potrebno je odraditi sve propratne testove kako bi se što više skratilo vreme za pregled i eventualne izmene. Naravno, review bi trebalo da se odnosi na samu programsku logiku i kompleksnost, a ne na stil, sintaksu i slične kozmetičke stvari.
Kada pregledač dostavi ili napiše kritike i savete za poboljšanje kvaliteta, autori odgovaraju i obrazlažu svaku svoju odluku, ispravljaju se potencijalne greške i kada je sve ok, spajaju se kodovi u celinu.
Gde se koristi i šta se proverava?
Postoje određeni standardi koji moraju da se ispune i u zavisnosti od samog tima, određena pravila kodiranja. Version control softveri su obično povezani sa code review-om, i na Github-u se obavljaju funkcije spajanja koda u celinu.
Nezamislivo je za velike aplikacije da se ne koristi version control, jer u samom procesu izrade sa velikim brojem programera, lako se može uleteti u haos iz kog se ne može izaći tako lako.
Code review smanjuje potencijalni haos, gde se prate pravila koja se primenjuju u pisanju aplikacije, pa programer koji vrši review mora da se uveri u funkcionalnost koda, da sve promene izgledaju dobro, svako paralelno programiranje se vrši bezbedno, kod nije složeniji nego što treba, testovi su dobro osmišljeni, korišćena su jasna imena u sintaksi, komentari su jasni i precizni, dobra dokumentacija koda i slično.
Brzina i efikasnost
Koliko brzo se obavlja code review zavisi pre svega od pregledača, ali utvrđeno je da efikasnost pregleda zavisi od brzine, što je i logično. Postoji neka referenca da je za između 200 i 400 linija koda potrebno sat vremena da bi se obezbedila optimalna efikasnost pregleda. Naravno, ove brojke variraju u zavisnosti od veličine i kompleksnosti samog projekta, ali služi kao guideline za onog ko vrši proveru.
Postoje softveri za statičku analizu koda koje često programeri koriste, jer otkrivaju ranjivosti i potencijalne kvarove i iz godine u godinu sve više su u upotrebi automatizovani alati za "peer code" pregled.
Nemaju sve kompanije u svom dnevnom planu rada code review, ali one koje imaju, verovatno izrađuju veće i kompleksnije softvere i timovi su veći, pa je code review sastavni deo njihove svakodnevnice.
Ovaj sistem provere je značajan i ne treba ga shvatati kao neki lični napad na programera koji je pisao kod (nekima je teško da razumeju kritiku na pravi način), već priliku da se sistem znanja proširi i na ostale članove tima, a može se iskoristiti i kao mentorstvo juniorima ili kolegama sa manje iskustva, gde će uvideti eventualne greške i unaprediti svoje znanje kao developer.
Cover photo source: www.freepik.com
0 komentara