Pregled koda (code review) neizostavni je deo svakog procesa razvoja softvera. Znamo da isti zadatak u programiranju može da se reši na više načina, ali je cilj svakog programera da pronađe onaj koji je najbolji. U tome pomaže i proces pregleda koda, gde kolege gleda tuđi kod i daje predloge za poboljšanje. Tako i on, ali i osoba koja pregleda kod uče i usavršavaju.
Što bi rekao naš narod, dve glave su pametnije od jedne.
O čemu treba sve da vodite računa kad vršite proces pregleda koda?
Izvukli smo najbitnije stavke po preporuci kompanije Google.
Primena
- Da li rešenje zaista radi ono što treba da radi?
- Postoji li scenario u kome rešenje neće da radi kako treba?
- Da li je kod izmenjen na pravom mestu?
- Treba li da se dodaju neke poruke o greškama (kada nešto ne treba da radi)?
- Da li se rešenje može pojednostaviti?
- Da li se koristi nešto što ne mora da se koristi (programski okvir/API/biblioteka)?
- Da li se kod dobro uklapa u postojeću arhitekturu?
- Da li kod može lako da se održava?
- Da li je izmena primenljiva u smislu kompatibilnosti sa prethodnim verzijama?
- Da li promena utiče na druge delove sistema?
- Da li su neke izmene hardkodovane? Uvek je bolje koristiti konstante ili enumeraciju.
Čitljivost
- Da li se kod razume iz prve i zašto ne?
- Da li čitljivost može da se poboljša promenom imena funkcija/klasa/promenjlivih?
- Mogu li metode da se skrate?
- Da li je kontrolni tok može da bude jasniji?
- Ima li nepotrebnih komentara?
- Da li se pridržavamo SOLID principa?
- Da li slično rešenje već postoji u kodu i zašto ono nije upotrebljeno?
Upotrebljivost funkcionalnosti
- Da li je predloženo rešenje razumljivo i upotrebljivo za krajnjeg korisnika?
- Da li je intuitivno za upotrebu?
Testiranje
- Da li kod može da se testira?
- Da li su napisani adekvatni unit ili integracioni testovi?
- Da li su napisani testovi dovoljni?
- Kolika je pokrivenost koda testovima?
- Da li će izmena uticati na postojeće testove?
Performanse
- Da li će rešenje uticati na performanse celog sistema?
- Da li postojeće rešenje može da se napiše tako da je efikasnije?
Bezbednost
- Postoji li neki sigurnosni propust?
- Da li su autorizacija i autentifikacija pravilno primenjene?
- Da li promena otkriva neke osetljive informacije, poput ključeva, lozinki itd.?
- Da li se pravilno primaju i šalju podaci spoljašnjima sistemima?
- Postoji li mogućnost za SQL injekcije?