Code Review – revizija programskog kôda
Thursday, 04.06.2009 – DejanBez obzira koji RDBMS ili programski jezik koristite, svjedoci ste izmjena u novijim verzijama dotičnih.
U većini slučajeva novije verzije sadrže ispravljene greške iz prethodnih verzija, zatim poboljšanja postojećih funkcionalnosti, kao i mnoge novotarije. Zbog svih tih izmjena, preporučljivo je raditi redovan pregled programskog kôda (code review) – ako ne jednom godišnje, onda barem nakon prelaska na noviju verziju RDBMS-a ili programskog jezika.
U mojoj bivšoj firmi se code review obavljao periodično svakih 6 mjeseci, što je po meni bilo nepotrebno, jer se gubilo dragocjeno vrijeme za razvoj novih aplikacija, a osim toga, u tom periodu se rijetko kad promjeni nešto bitno u kompletnom sistemu, da bi se morala raditi revizija svih aplikacija.
Po meni se revizija svih ili barem bitnih aplikacija mora obavljati prilikom svakog prelaska na novije verzije (major release change) ili jednom godišnje ukoliko dođe do većih promjena u sistemu.
Tako npr. verzija Oracle 11g sadrži mnoštvo ispravljenih grešaka iz prethodnih verzija, kao i mnogo novih funkcionalnosti u odnosu na starije verzije, a koje bi mogle doprinijeti poboljšanju rada određenih aplikacija baziranih na Oracle tehnologijama. Čak se i verzija Oracle 10g Release 2 prilično razlikuje od verzije 10g Release 1, a o poređenju sa verzijama 9i ili 8i da i ne govorim…
Isto tako i nove verzije MySQL-a, PHP-a i td. sadrže priličan broj izmjena, tako da se prelazak na novije verzije preporučuje u svakom slučaju, ali tek nakon što se obavi detaljno testiranje postojećih aplikacija.
Prije prelaska na novije verzije, obavezno pročitajte change log, da biste dobili uvid u značajne promjene u odnosu na prethodne verzije. Nakon toga podesite testnu konfiguraciju sa novijim verzijama odabranog RDBMS-a ili programskog jezika, pa prepravljeni programski kôd detaljno testirajte prije nego što ga postavite u proizvodno okruženje.
Mnogima je revizija programskog kôda dosadna i smarajuća, ali se to jednostavno MORA obaviti ukoliko želite imati uspješan sistem na duže staze.
2 Responses to “Code Review – revizija programskog kôda”
Kako ste kod radili code review u firmi. Mi smo sada imali jedan interesantan slučaj kod prelaska na 11g, da su neki programeri koristili nedokumentovan feature baze 10g da TOO_MANY_ROWS exception na 10g vrati u INTO varijable prvi slog koji fetch dohvati. Traženje mesta na kojem se nalaze takve stvari je bilo prilično pešako i iscrplujuće.
Da li postoji neki softver koji može da pomogne u ovakvom slučaju?
By Djordje on Jun 4, 2009
@Djordje: Ne postoji neki univerzalni software, pomocu kojeg bi trazio takve greske… Pogotovo u slucajevima kada se koriste “nedokumentovane” mogucnosti. 😉
Code review se kod nas (ovo govorim prvenstveno za PL/SQL) radi polu-automatski… Pokrene se Profiler, koji vrsi analizu svake linije kôda, pa onda gledamo one dijelove kôda, koji trose najvise vremena i odlucujemo da li se isplati prepravljati taj dio ili ne …
Zatim, kada saznamo za neku novu mogucnost u novijim verzijama baze (npr. BULK COLLECT, FORALL, ROW_NUMBER(), pa zatim MAX() KEEP(DENSE_RANK ORDER BY) i ostale analiticke funkcije, PIVOT/UNPIVOT, CONNECT BY NOCYCLE i td.), onda gledamo da postojece SQL upite zamijenimo novima, koristeci upravo te novootkrivene funkcije/mogucnosti u Oracle bazi…
Ja sam do sada prepravio ihahaj procedura, napisanih jos u verziji 8i, da koriste nove mogucnosti u verzijama 9i i 10g, a uskoro i 11g (iduce godine planiramo preci na 11g Rel 2), pri cemu se izvrsavanje pojedinih aplikacija smanjilo drasticno u odnosu na prije…
Npr. jednu rekurzivnu funkciju, koja je trazila parent-child veze izmedju zapisa u jednoj velikoj tabeli, sam izbacio u potpunosti i napisao jedan jedini SQL upit koristeci operatore za hijerarhijske upite (CONNECT BY PRIOR) – vrijeme izvrsavanja se sa ~35 sekundi svelo na ~2 sekunde …
By Dejan on Jun 4, 2009