Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej

Post on 01-Jul-2015

7.117 views 2 download

description

Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej

Transcript of Code Review, czyli przegląd kodu - prezentacja tematu pracy magisterskiej

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