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

94

Click here to load reader

description

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

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

Page 1: 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

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

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.

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

moja historia

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

ZPP

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

Zespołowy Projekt Programistyczny

My konia kuliśmy, a żaby nam nogi podstawiały.

Page 6: Code Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiej
Page 7: Code Review, czyli przegląd kodu -  prezentacja tematu pracy magisterskiej

Różne potworki:

• giveName() zamiast getName(),

• nie pozamykane pliki,

• czasem nikt nie wiedział, co aplikacja ma robić.

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

Co to jest przegląd kodu?

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

Co to jest przegląd kodu?

• Jeden programista piszę kod, a drugi jest proszony o jego przegląd,

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

Co to jest przegląd kodu?

• Jeden programista piszę kod, a drugi jest proszony o jego przegląd,

• “delikatna” krytyka linijka po linijce,

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

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.

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

Po co code-review jeśli robię testy jednostkowe?

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

Po co code-review jeśli robię testy jednostkowe?• Obie rzeczy są po to, aby minimalizować

liczbę błędów,

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

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ć,

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

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,

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

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.

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

Zalety code-review (1)

uchowanie przed godzinami debuggowania

senior developer - junior developer (czarna praca)

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

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)

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

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)

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

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)

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

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)

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

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)

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

Zalety code-review (2)

subtelne i niepisane zasady

wiedza o tym, kto jest w czym dobry, a gdzie trzeba się jeszcze komus przygladac

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

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

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

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

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

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

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

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

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

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

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

Rzeczywistość code-review

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

Rzeczywistość code-review• Trudny do wprowadzenia,

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

Rzeczywistość code-review• Trudny do wprowadzenia,

• większość programistów nie lubi krytyki,

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

Rzeczywistość code-review• Trudny do wprowadzenia,

• większość programistów nie lubi krytyki,

• korzyści nie są zauważalne od razu,

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

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,

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

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ę.

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

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

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

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

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

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

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

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

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

3 podejścia do code-review

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

3 podejścia do code-review

• Brak przeglądu kodu,

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

3 podejścia do code-review

• Brak przeglądu kodu,

• nieblokujące przeglądy kodu,

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

3 podejścia do code-review

• Brak przeglądu kodu,

• nieblokujące przeglądy kodu,

• sprawdzenie następuje zazwyczaj po wprowadzeniu kodu do repozytorium,

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

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 :),

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

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,

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

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,

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

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 :(.

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

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

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

Nieblokujące przeglądy kodu

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

Nieblokujące przeglądy kodu

• Brak blokady repozytorium,

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

Nieblokujące przeglądy kodu

• Brak blokady repozytorium,

• nie trzeba siedzieć i czekać na przegląd,

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

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,

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

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,

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

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,

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

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,

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

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.

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

Prostsza forma code-review Pomysł na współdzielone

pliki, workspace’y działające w czasie rzeczywistym.

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

Prostsza forma code-review

• Wirutalne przeglądy kodu,

Pomysł na współdzielone pliki, workspace’y działające w czasie rzeczywistym.

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

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.

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

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.

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

O czym jest ta magisterka?

Jest to system wspomagający dokonywanie wirtualnych przeglądów kodu.

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

Jak to działa?

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

Jak to działa?

programista

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

Jak to działa?

programista repozytorium(subversion)

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

Jak to działa?

programista repozytorium(subversion)

nighthawkcode-review

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

Inne bajery

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

Inne bajery

• Ładne kolorowanie składni i diff ’ów,

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

Inne bajery

• Ładne kolorowanie składni i diff ’ów,

• przeglądanie wizualne kodu w repozytorium (!),

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

Inne bajery

• Ładne kolorowanie składni i diff ’ów,

• przeglądanie wizualne kodu w repozytorium (!),

• workflow: draft > approval > review > summarize > closed,

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

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,

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

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ą).

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

Wizualny diff

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Innowacyjna implementacja

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

Dlaczego warto to zrobić?

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

Dlaczego warto to zrobić?

• Nieoceniony dla rozproszonych zespołów programistycznych,

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

Dlaczego warto to zrobić?

• Nieoceniony dla rozproszonych zespołów programistycznych,

• przeglądy online zamiast czytania gazeta.pl,

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

Dlaczego warto to zrobić?

• Nieoceniony dla rozproszonych zespołów programistycznych,

• przeglądy online zamiast czytania gazeta.pl,

• szybkie przygotowanie kodu do przeglądu,

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

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,

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

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.

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

Proces wytwórczy aplikacji

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

Proces wytwórczy aplikacji

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

Proces wytwórczy aplikacji

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

Proces wytwórczy aplikacji

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

Proces wytwórczy aplikacji

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

Proces wytwórczy aplikacji

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

Harmonogram

do końca listopada:

zebranie wymagań i opracowanie koncepcji

do końca pierwszego semestru:

implementacja

do końca kwietnia:

papierkowa robota

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

Pytania?

Wiktor Gworekhttp://blog.mocna-kawa.com