Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej - Presentation Transcript
Code-review, czyli
przegląd kodu
Wiktor Gworek
V rok informatyki MIMUW
http://blog.mocna-kawa.com
Tłumaczenie code-review
• Nie ma dobrego
odpowiednika code-review w
języku polskim,
• możliwe tłumaczenia to
dozór kodu, przegląd kodu,
• code-review jest znane także
jako peer-review.
moja historia
ZPP
Zespołowy Projekt
Programistyczny
My konia kuliśmy, a żaby nam nogi podstawiały.
Różne
potworki:
• giveName() zamiast getName(),
• nie pozamykane pliki,
• czasem nikt nie wiedział, co
aplikacja ma robić.
Co to jest przegląd kodu?
Co to jest przegląd kodu?
• Jeden programista piszę kod, a
drugi jest proszony o jego
przegląd,
Co to jest przegląd kodu?
• Jeden programista piszę kod, a
drugi jest proszony o jego
przegląd,
• “delikatna” krytyka linijka po
linijce,
Co to jest przegląd kodu?
• Jeden programista piszę kod, a
drugi jest proszony o jego
przegląd,
• “delikatna” krytyka linijka po
linijce,
• celem jest kooperacja, a nie usilne
szukanie błędów.
Po co code-review jeśli
robię testy jednostkowe?
Po co code-review jeśli
robię testy jednostkowe?
• Obie rzeczy są po to, aby minimalizować
liczbę błędów,
Po co code-review jeśli
robię testy jednostkowe?
• Obie rzeczy są po to, aby minimalizować
liczbę błędów,
• nie wszystko da się prztestować,
Po co code-review jeśli
robię testy jednostkowe?
• Obie rzeczy są po to, aby minimalizować
liczbę błędów,
• nie wszystko da się prztestować,
• architektura, zaprojektowanie aplikacji,
Po co code-review jeśli
robię testy jednostkowe?
• Obie rzeczy są po to, aby minimalizować
liczbę błędów,
• nie wszystko da się prztestować,
• architektura, zaprojektowanie aplikacji,
• wszyscy w zespole znają lepiej kod aplikacji.
Zalety code-review (1)
• Dwie pary oczu znajdują więcej błędów niż
jedna,
uchowanie przed
godzinami debuggowania
senior developer - junior
developer (czarna praca)
Zalety code-review (1)
• Dwie pary oczu znajdują więcej błędów niż
jedna,
• znajdowane błędów we wstępnych cyklach pisania aplikacji,
uchowanie przed
godzinami debuggowania
senior developer - junior
developer (czarna praca)
Zalety code-review (1)
• Dwie pary oczu znajdują więcej błędów niż
jedna,
• znajdowane błędów we wstępnych cyklach pisania aplikacji,
• zwiększenie pewności, że stworzony kod jest
lepiej zaprojektowany,
uchowanie przed
godzinami debuggowania
senior developer - junior
developer (czarna praca)
Zalety code-review (1)
• Dwie pary oczu znajdują więcej błędów niż
jedna,
• znajdowane błędów we wstępnych cyklach pisania aplikacji,
• zwiększenie pewności, że stworzony kod jest
lepiej zaprojektowany,
• utrzymanie czytelności i wysokiej jakości kodu, uchowanie przed
godzinami debuggowania
senior developer - junior
developer (czarna praca)
Zalety code-review (1)
• Dwie pary oczu znajdują więcej błędów niż
jedna,
• znajdowane błędów we wstępnych cyklach pisania aplikacji,
• zwiększenie pewności, że stworzony kod jest
lepiej zaprojektowany,
• utrzymanie czytelności i wysokiej jakości kodu,
• zachęca programistów do wzajemnej
uchowanie przed
godzinami debuggowania
senior developer - junior
komunikacji. developer (czarna praca)
Zalety code-review (2)
subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Zalety code-review (2)
• Nauczanie świeżych programistów,
subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Zalety code-review (2)
• Nauczanie świeżych programistów,
• dzielenie się wiedzą i doświadczeniem,
subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Zalety code-review (2)
• Nauczanie świeżych programistów,
• dzielenie się wiedzą i doświadczeniem,
• uczenie się z błędów bez psucia niczego,
subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Zalety code-review (2)
• Nauczanie świeżych programistów,
• dzielenie się wiedzą i doświadczeniem,
• uczenie się z błędów bez psucia niczego,
• stworzenie zaufania,
subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Zalety code-review (2)
• Nauczanie świeżych programistów,
• dzielenie się wiedzą i doświadczeniem,
• uczenie się z błędów bez psucia niczego,
• stworzenie zaufania,
• alternatywa dla kodowania w parach. subtelne i niepisane
zasady
wiedza o tym, kto jest w
czym dobry, a gdzie
trzeba się jeszcze komus
przygladac
Rzeczywistość code-review
Rzeczywistość code-review
• Trudny do wprowadzenia,
Rzeczywistość code-review
• Trudny do wprowadzenia,
• większość programistów nie lubi
krytyki,
Rzeczywistość code-review
• Trudny do wprowadzenia,
• większość programistów nie lubi
krytyki,
• korzyści nie są zauważalne od
razu,
Rzeczywistość code-review
• Trudny do wprowadzenia,
• większość programistów nie lubi
krytyki,
• korzyści nie są zauważalne od
razu,
• publiczne przeglądy kodu zabierają
za dużo czasu,
Rzeczywistość code-review
• Trudny do wprowadzenia,
• większość programistów nie lubi
krytyki,
• korzyści nie są zauważalne od
razu,
• publiczne przeglądy kodu zabierają
za dużo czasu,
• niezależne przeglądy kodu
duplikują pracę.
Fakty o code-review
Kiedy ser wlet otrzymuje
więcej niż 20 requestów
na sekundę to pojawia
się deadlock pomiędzy
A.java:128 a B.java:56
Fakty o code-review
• Przeglądy kodu nie ujawniają krytycznych
błędów,
Kiedy ser wlet otrzymuje
więcej niż 20 requestów
na sekundę to pojawia
się deadlock pomiędzy
A.java:128 a B.java:56
Fakty o code-review
• Przeglądy kodu nie ujawniają krytycznych
błędów,
• programiści stają się bardziej uczciwi,
Kiedy ser wlet otrzymuje
więcej niż 20 requestów
na sekundę to pojawia
się deadlock pomiędzy
A.java:128 a B.java:56
Fakty o code-review
• Przeglądy kodu nie ujawniają krytycznych
błędów,
• programiści stają się bardziej uczciwi,
• trzeba spędzić więcej czasu, żeby
uczynić kod bardziej czytelnym.
Kiedy ser wlet otrzymuje
więcej niż 20 requestów
na sekundę to pojawia
się deadlock pomiędzy
A.java:128 a B.java:56
3 podejścia do code-
review
3 podejścia do code-
review
• Brak przeglądu kodu,
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
• takie właśnie lubimy :),
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
• takie właśnie lubimy :),
• blokujące przeglądy kodu,
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
• takie właśnie lubimy :),
• blokujące przeglądy kodu,
• nic nie jest wprowadzanie do repozytorium dopóki nie jest
sprawdzone,
3 podejścia do code-
review
• Brak przeglądu kodu,
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
• takie właśnie lubimy :),
• blokujące przeglądy kodu,
• nic nie jest wprowadzanie do repozytorium dopóki nie jest
sprawdzone,
• takich nie lubimy :(.
3 podejścia do code-
review
• Brak przeglądu kodu,ogóle nie lubimy
tego w
• nieblokujące przeglądy kodu,
• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do
repozytorium,
• takie właśnie lubimy :),
• blokujące przeglądy kodu,
• nic nie jest wprowadzanie do repozytorium dopóki nie jest
sprawdzone,
• takich nie lubimy :(.
Nieblokujące przeglądy
kodu
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
• programista dokonuje przeglądu wtedy, kiedy ma
na to czas,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
• programista dokonuje przeglądu wtedy, kiedy ma
na to czas,
• wejdzie mu to w nawyk tak, jak pisanie testów,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
• programista dokonuje przeglądu wtedy, kiedy ma
na to czas,
• wejdzie mu to w nawyk tak, jak pisanie testów,
• 10 sekund poświęcone pisaniu komentarza
ułatwia znacząco jego czytanie,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
• programista dokonuje przeglądu wtedy, kiedy ma
na to czas,
• wejdzie mu to w nawyk tak, jak pisanie testów,
• 10 sekund poświęcone pisaniu komentarza
ułatwia znacząco jego czytanie,
• zdrowy nawyk, ćwiczenie umysłowe,
Nieblokujące przeglądy
kodu
• Brak blokady repozytorium,
• nie trzeba siedzieć i czekać na przegląd,
• programista dokonuje przeglądu wtedy, kiedy ma
na to czas,
• wejdzie mu to w nawyk tak, jak pisanie testów,
• 10 sekund poświęcone pisaniu komentarza
ułatwia znacząco jego czytanie,
• zdrowy nawyk, ćwiczenie umysłowe,
• poznawanie innych stylów/idiomów kodowania.
Prostsza forma code-
review Pomysł na współdzielone
pliki, workspace’y
działające w czasie
rzeczywistym.
Prostsza forma code-
review Pomysł na współdzielone
pliki, workspace’y
działające w czasie
rzeczywistym.
• Wirutalne przeglądy kodu,
Prostsza forma code-
review Pomysł na współdzielone
pliki, workspace’y
działające w czasie
rzeczywistym.
• Wirutalne przeglądy kodu,
• wiadomości przesyłane pomiędzy
programistami są zorientowane na kod,
Prostsza forma code-
review Pomysł na współdzielone
pliki, workspace’y
działające w czasie
rzeczywistym.
• Wirutalne przeglądy kodu,
• wiadomości przesyłane pomiędzy
programistami są zorientowane na kod,
• wprowadzenie komunikacji dające poczucie
jakby inni programiści byli obok siebie.
O czym jest ta
magisterka?
Jest to system wspomagający dokonywanie wirtualnych
przeglądów kodu.
Jak to działa?
Jak to działa?
programista
Jak to działa?
programista repozytorium
(subversion)
Jak to działa?
programista repozytorium nighthawk
(subversion) code-review
Inne bajery
Inne bajery
• Ładne kolorowanie składni i diff’ów,
Inne bajery
• Ładne kolorowanie składni i diff’ów,
• przeglądanie wizualne kodu w
repozytorium (!),
Inne bajery
• Ładne kolorowanie składni i diff’ów,
• przeglądanie wizualne kodu w
repozytorium (!),
• workflow: draft > approval > review >
summarize > closed,
Inne bajery
• Ładne kolorowanie składni i diff’ów,
• przeglądanie wizualne kodu w
repozytorium (!),
• workflow: draft > approval > review >
summarize > closed,
• role: author, reviewer, moderator,
Inne bajery
• Ładne kolorowanie składni i diff’ów,
• przeglądanie wizualne kodu w
repozytorium (!),
• workflow: draft > approval > review >
summarize > closed,
• role: author, reviewer, moderator,
• integracja z FindBugs (z analizą statyczną).
Wizualny diff
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Innowacyjna
implementacja
Dlaczego warto to
zrobić?
Dlaczego warto to
zrobić?
• Nieoceniony dla rozproszonych zespołów
programistycznych,
Dlaczego warto to
zrobić?
• Nieoceniony dla rozproszonych zespołów
programistycznych,
• przeglądy online zamiast czytania gazeta.pl,
Dlaczego warto to
zrobić?
• Nieoceniony dla rozproszonych zespołów
programistycznych,
• przeglądy online zamiast czytania gazeta.pl,
• szybkie przygotowanie kodu do przeglądu,
Dlaczego warto to
zrobić?
• Nieoceniony dla rozproszonych zespołów
programistycznych,
• przeglądy online zamiast czytania gazeta.pl,
• szybkie przygotowanie kodu do przeglądu,
• komentowanie inline,
Dlaczego warto to
zrobić?
• Nieoceniony dla rozproszonych zespołów
programistycznych,
• przeglądy online zamiast czytania gazeta.pl,
• szybkie przygotowanie kodu do przeglądu,
• komentowanie inline,
• metryka, możliwość odpowiedzi.
Proces wytwórczy
aplikacji
Proces wytwórczy
aplikacji
Proces wytwórczy
aplikacji
Proces wytwórczy
aplikacji
Proces wytwórczy
aplikacji
Proces wytwórczy
aplikacji
Harmonogram
do końca listopada:
zebranie wymagań i opracowanie
koncepcji
do końca pierwszego semestru:
implementacja
do końca kwietnia:
papierkowa robota
0 comments
Post a comment