code review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej
DESCRIPTION
Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiejTRANSCRIPT
Code-review, czyli przegląd kodu
Wiktor GworekV 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)
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,
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 komunikacji.
uchowanie przed godzinami debuggowania
senior developer - junior 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 serwlet 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 serwlet 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 serwlet 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 serwlet 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,
• 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 :(.
tego w ogóle 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
• Wirutalne przeglądy kodu,
Pomysł na współdzielone pliki, workspace’y działające w czasie rzeczywistym.
Prostsza forma code-review
• Wirutalne przeglądy kodu,
• wiadomości przesyłane pomiędzy programistami są zorientowane na kod,
Pomysł na współdzielone pliki, workspace’y działające w czasie rzeczywistym.
Prostsza forma code-review
• 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.
Pomysł na współdzielone pliki, workspace’y działające w czasie rzeczywistym.
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(subversion)
nighthawkcode-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
Pytania?
Wiktor Gworekhttp://blog.mocna-kawa.com