Z mojego doświadczenia wynika, że najlepszym sposobem jest pozwolić zespołowi dziury na dokonanie przeglądu kodu. Używamy listy mailingowej zatwierdzenia w każdym projekcie, gdzie możesz śledzić każdą zmianę kodu w systemie kontroli wersji. Większość naszych programistów zasubskrybowała listę mailingową specyficzną dla swojego projektu, ponieważ są zainteresowani zmianami w kodzie.
Kiedy ktoś zauważy zły sposób w nowym kodzie źródłowym, albo wyjaśnia komisarzowi, w jaki sposób może to zrobić lepiej, jeśli komisarz jest stażystą, albo rozpoczyna dyskusję na ten temat, jeśli był to bardziej doświadczony komisarz.
Oczywiście ta metoda nie gwarantuje, że cały nowy kod jest sprawdzany, szczególnie w stresujących czasach, gdy nikt z zespołu nie ma czasu na śledzenie każdej zmiany kodu. Również nie każdy programista jest odpowiedzialny za zapewnienie, że każdy programista poprawi swoją pracę, sam nie możesz zagwarantować, że zostanie sprawdzony. Ale przynajmniej w naszych zespołach zawsze jest kierownik techniczny odpowiedzialny za jakość techniczną.
Jestem prawdziwym fanem recenzji kodu, jeśli są one zgodne z następującymi wynikami:
- każdy programista ma możliwość przejrzenia całego kodu i argumentów według swojej opinii
- nikt nie ma prawa nadużywać kodu innego użytkownika
- nie tylko zły kod aktywuje dyskusję, ale także dobry kod
- dyskusje kończą się szczęściem dla wszystkich zaangażowanych osób
- przegląd odbywa się prawie w czasie rzeczywistym, przynajmniej przed ukończeniem funkcji
Nauczyłem się, że jeśli jesteś kimś, kto przegląda każdą linię kodu i myśli, że musisz kontrolować takie rzeczy, jak jakość kodu pod względem formatowania kodu lub wydajności kodu, to jesteś bardzo nieefektywny, ponieważ robisz rzeczy, które maszyny mogą zrobić dla ty. Twoim celem powinno być stosowanie systemu ciągłej integracji, który kontroluje kompilację i jakość kodu każdego wkładu kodu. Jeśli ten system generuje raporty i wysyła je do autorów, wszystko jest idealne.
Muszę przyznać, że jeśli musisz przejrzeć kod, ponieważ musisz kontrolować lub uszeregować jakość programisty, moje sugestie nie mają sensu. W tym przypadku nie przeglądałbym również kodu źródłowego wiersz po wierszu. Chciałbym przejrzeć takie rzeczy jak:
- czy istnieją kwestie związane z bezpieczeństwem
- są używane zamierzone interfejsy API
- czy kod zastosował określoną architekturę
- czy napisał użyteczne testy (ale tylko jeśli został poinstruowany domyślnie, musiałem się nauczyć)
- Dokumentacja
- proces kompilacji
- ... i kilka innych, prawdopodobnie
Jeśli jesteś doświadczonym programistą, na pewno zawsze znajdziesz takie rzeczy, jak pętle, które możesz zrobić z lepszą wydajnością. Oczywiście warto wyjaśnić innym taką wiedzę, ale nie powinno to być częścią sesji przeglądowej. Jeśli występują znaczące problemy z wydajnością, to nie dlatego, że on (lub ona) użył mniej wydajnego wariantu typu listy.
Ponieważ początkowe pytanie brzmiało, dlaczego niektórzy wydają się robić lepszą recenzję, a inni odpowiadam, że ci ludzie mogą zrobić podgląd przed rozpoczęciem prawdziwej recenzji, co oznacza, że prawdopodobnie przygotowali się samodzielnie, aby wiedzieli dokładnie, co chcą sprawdzić .