Wbrew powszechnym opiniom, nie tak prosto jest zrobić dobre Code Review. Robione w pośpiechu, tylko po to by je "odbębnić", często stwarza więcej szkody niż pożytku. Opowiem wam dlaczego code review jest ważne i jak wykorzystać ten proces aby upewnić się, że napisany kod jest najwyższej jakości. Będę nie tylko mówił o tym kto powinien robić code reviews, i dla kogo, jakie informacje są potrzebne do przeprowadzenia skutecznego code review, ale także jak zrobić dobre code review w najkrótszym możliwym czasie.
2. !
• ponad
12
lat
doświadczenia
w
programowaniu
• zwolennik
automatyzacji
procesów
• TDD
i
CI
• w
miarę
wolnego
czasu
wspiera
open
source
h"ps://joind.in/9759
@proofek
5. Wszystkie wydarzenia i
postacie w tej
prezentacji są
fikcyjne.
!
Jakiekolwiek
podobieństwo jest
całkowicie
przypadkowe.
Na początek
6. Roman “Potrzebuję to na wczoraj” –
Właściciel firmy
Stefan “Ma być zrobione” –
Kierownik
Zespół
7. “Nocny Marek” – programista
Krzysiek “Haker” –
doświadczony programista
Paweł “Będzie dobrze” – praktykant
Zespół
8. Jak długo zajmie wam skończenie
tego projektu?
Hmm, projekt, programowanie,
code review, testy…
Code review? A po co code review? Co,
programować nie umiecie? Poza tym przecież
będą testy...?
Sytuacja 1
9. Ok. Prawie gotowe! Jeszcze tylko
code review...
Hmmm… ale wszyscy mają kupę roboty! Nie ma
nikogo wolnego. Dajmy sobie spokój i puśćmy
to prosto do testów…
Sytuacja 2
10. Cześć Stefan,
Potrzebuję Marka, żeby zrobił mi to
code review.
Marek pracuje nad czymś ważnym teraz,
ale Paweł może na to spojrzeć.
Ale Paweł jest stażystą i nie zna
jeszcze tego systemu...
Chcesz mieć to code review
zrobione czy nie?! Mam tylko
Pawła.
Sytuacja 3
11. Ciągle robimy te code review, patrzymy
na ten kod, spędzamy nad tym masę
czasu, a za każdym razem jak
wypuszczamy nowy produkt mamy
problemy. Marnujemy tylko czas!
Sytuacja 4
12. Code review
Marek - programista
21:31 (0 minut temu)
do
Krzysiek
-‐
inspektor
Krzysiek,
!
Możesz proszę spojrzeć na to? Właśnie skończyłem nad tym pracować.
Zmiany są w moim repozytorium w gałęzi “problem-naprawiony”.
!
Dzięki
!
---
Marek
Kliknij tutaj, aby Odpowiedz or Przekaż dalej
15. Code review
Marek - programista
21:31 PM (13 minut temu)
do
Krzysiek
-‐
inspektor
Krzysiek,
!
Możesz proszę spojrzeć na to? Właśnie skończyłem nad tym pracować.
Zmiany są w moim repozytorium w gałęzi “problem-naprawiony”.
!
Dzięki
!
---
Marek
Krzysiek - Inspektor
do
Marek
-‐
programista
21:44 (0 minut temu)
Marek,
!
Spoko, tylko na bazie jakiej gałęzi stworzyłeś tą gałąź?
Bez tego nie dam rady zidentyfikować zestawu zmian.
!
---
Krzysiek
Kliknij tutaj, aby Odpowiedz or Przekaż dalej
16. Systemy
kontroli
wersji
• konkretne
zestawy
zmian
(changesets)
• unikanie
konkretnych
commitów
• inspekcja
łatek
(patches)
ryzykowna,
chyba
że
zautomatyzowana
Na co zwracać uwagę?
17. Code review
21:31 (25 minut temu)
Marek - programista
Krzysiek, Możesz proszę an to spojrzeć? Właśnie skończyłem nad tym pracować…
Krzysiek - Inspektor
21:44 (12 minut temu)
do
Marek
-‐
programista
Marek,
!
Spoko, tylko na bazie jakiej gałęzi stworzyłeś tą gałąź?
Bez tego nie dam rady zidentyfikować zestawu zmian.
!
---
Krzysiek
Marek - programista
21:56 PM (0 minut temu)
do
Krzysiek
-‐
inspektor
Krzysiek,
!
No tak, przepraszam. Gałąź stworzyłem na podstawie mastera.
!
---
Marek
31. Krzysiek
“Doświadczony
Inspektor”
Sprawdza:
• przejrzystość
kodu
• wydajność
• nadmierna
złożoność
(complexity)
• wpływ
na
inne
systemy
• czy
problem
został
rozwiązany
• duplikacja
kodu
• jakość
kodu
• problemy
z
wdrażaniem
systemu
(deployment)
• niedociągnięcia
na
etapie
projektowania
(soZware
design)
…zwraca uwagę na najważniejsze rzeczy
32. • Przekazywanie
wiedzy
• Szkolenie
nowych/początkujących
programistów
• Wczesne
wykrywanie
błędów
i
problemów
• Poprawa
jakości
kodu
• Promowanie
zbiorowej
odpowiedzialności
za
kod
Największa zaleta – korzystają na tym wszyscy!
33. PROGRAMIŚCI
• Zaakceptuj
fakt,
że
każdy
popełnia
błędy
(ty
też!)
!
• “dziurawy”
kod
!=
kiepski
programista
!
• nieważne
jak
dużo
wiesz,
zawsze
znajdzie
się
ktoś
kto
wie
więcej
!
• Nie
przepisuj
kodu
bez
wcześniejszych
uzgodnień
Relacje międzyludzkie - programiści
34. INSPEKTORZY
• Prawdziwy
autorytet
jest
poparty
wiedzą
i
doświadczeniem,
a
nie
stanowiskiem
!
• Krytykuj
kod
a
nie
ludzi
Relacje międzyludzkie – inspektorzy
35. • Gdzie
szukać
kodu
• Opis
zmiany
– Co
zostało
zmienione?
• Powód
zmiany
– Dlaczego
kod
został
zmieniony?
Podsumowanie - co zawrzeć w code review
CO?
– Repozytorium,
nazwa
gałęzi,
podstawa
gałęzi
36. – W
razie
wątpliwości
proś
o
pomoc
• KwesFonuj
implementację
– Upewnij
się,
że
problem
został
właściwie
rozwiązany
Podsumowanie - kto powinien przeprowadzić inspekcję kodu?
KTO?
• Pytaj
ekspertów
37. – systemy
śledzenia
błędów,
np.
Jira,
Trac,
ManFs,
itd.
– narzędzia
do
inspekcji
kodu,
np.
Fisheye/Crucible,
gerrit,
Phabricator
• Rozmowa/Programowanie
w
parach
– upewnij
się,
że
komentarze
są
udokumentowane
Podsumowanie – jak zgłosić code review?
GDZIE?
• Historia
zmian
38. • Używaj
narzędzi,
automatyzuj
• Oceń
wpływ
na
inne
systemy
• Upewnij
się,
że
kod
jest
dobrze
udokumentowany
i
łatwy
do
zrozumienia
Podsumowanie - jak przeprowadzić dobrą inspekcję?
JAK?
• Zwracaj
uwagę
na
duplikację
i
zbyt
skomplikowany
kod