Kompendium Code Review
Czym jest code review?
Code review, znane również jako peer review lub pull request review, to proces oceny i analizy kodu źródłowego przez innych programistów lub członków zespołu programistycznego. Głównym celem code review jest poprawa jakości kodu, zidentyfikowanie błędów i problemów oraz zwiększenie zrozumienia kodu przez innych programistów. Proces ten może być stosowany w różnych kontekstach, takich jak rozwijanie oprogramowania, zarządzanie projektem czy utrzymanie istniejących aplikacji.
Znaczenie code review
Czy przegląd kodu jest tak ważny? Czy możemy mieć oprogramowanie do przeglądu kodu, które wykona pracę za nas? Narzędzia do przeglądu kodu mogą dać świetną rękę, ale – jak to się dzieje w każdym innym kontekście – ludzie zawsze mogą zauważyć rzeczy, które maszyny przegapią. Co więcej, możliwość przyjrzenia się pracy kolegi daje szansę na poprawienie własnych umiejętności i nauczenie się kilku sztuczek. Z drugiej strony, gdy masz swoje recenzje kodu od kolegi, możesz uzyskać cenne informacje zwrotne i wskazówki dotyczące poprawy.
Code review zawsze poprawia końcowe wyniki: jest to, ogólnie rzecz biorąc, szansa na poprawienie swojego kodu, a tym samym jakości oprogramowania lub aplikacji, którą budujesz. Jak już wspomnieliśmy, code review pomaga wychwycić błędy na wczesnym etapie procesu rozwoju: może to zmniejszyć czas i koszty samego procesu rozwoju. Jak widzimy, nie ma żadnych minusów przeglądu kodu. Nadszedł czas, abyśmy omówili, jak to zrobić.
Dlaczego warto przeprowadzać code review?
- Pomaga w wykrywaniu błędów logicznych, składniowych, bezpieczeństwa czy wydajności w kodzie. Dzięki temu można uniknąć poważnych problemów w przyszłości.
- Umożliwia polepszenie czytelności, struktury i stylu kodu, co ułatwia jego zrozumienie i utrzymanie.
- Pomaga w dzieleniu się wiedzą i doświadczeniem między członkami zespołu. Osoby recenzujące mogą uczyć się od siebie nawzajem.
- Code review angażuje cały zespół w rozwijanie oprogramowania i pozwala na wspólne podejmowanie decyzji dotyczących projektu.
- Dzięki code review możemy utrzymywać spójność w kodzie, co jest ważne w dłuższej perspektywie.
Warto zaznaczyć, że code review nie tylko pomaga w wykrywaniu błędów, ale także może pomóc w zapobieganiu konfliktom między członkami zespołu, zapewniając pełniejsze zrozumienie i akceptację zmian wprowadzanych do kodu. Jest to ważny proces w praktyce wytwarzania oprogramowania i przyczynia się do tworzenia bardziej niezawodnych i wydajnych aplikacji.
Na co zwrócić uwagę oddając kod do code review?
- Zastanów się czy kod dobrze się czyta, czy można coś napisać lepiej czy krócej. Czy w dobrym miejscu znajduje się plik i czy ma to jakieś uzasadnienie? A może coś da się wydzielić lub zrobić używalne?
- Nie wrzucaj wszystkiego jako jeden, wielki commit. W miarę możliwości dziel kod na mniejsze porcje. Dużo łatwiej analizuje się mniejszą ilość zmian. Po za tym, można prześledzić proces zmian.
- Dodaj do swojego kodu komentarze opisujące dane rozwiązanie. Dzięki temu osoba po drugiej stronie będzie mogła zrozumieć twoje intencje i powód (kontekst) zmian. Może się okazać, że zaproponowane rozwiązanie jest optymalne w tym konkretnym przypadku.
- W przypadku wprowadzania zmian w kodzie nie commituj ich jako
cr fixes! To nic nie mówi. Opisuj faktyczne zmiany w kodzie. Idealnie tutaj sprawdzi się conventional commits (pro tip: w przypadku wprowadzania zmian w kodzie będziesz chciał poprzedzić swój commit message przezrefactor:).
Lista kontrolna przeglądu kodu
Właściwy proces przeglądu kodu zaczyna się teraz. Jak już wspomnieliśmy, wszyscy programiści prowadzący code review używają list kontrolnych, aby upewnić się, że sprawdzają i testują wszystkie aspekty, które muszą być sprawdzone i przetestowane.
De-bug
Numerem 1 na twojej liście kontrolnej przeglądu kodu jest zawsze debugowanie. Jak widzieliśmy, istnieje wiele powodów, dla których chcesz przeprowadzić code review, ale z pewnością debugowanie i usuwanie wszystkich problemów jest twoim priorytetem.
Błędy mogą pochodzić z błędnie wpisanych zmiennych, parametrów w złej kolejności i innych prostych błędów; autor kodu zwykle nie jest w stanie ich zauważyć, ponieważ jest zmęczony i ponieważ przeszedł przez ten kod w kółko (to ten sam powód, dla którego autor tekstu nie jest osobą, która powinna sprawdzać literówki!).
Tak więc, pierwszą rzeczą, którą chcesz wykreślić ze swojej listy kontrolnej przeglądu kodu jest de-bug (możesz również użyć narzędzi programowych do debugowania w tym momencie, ale upewnij się, że również przejrzysz kod na własne oczy; jest to również szansa na pierwsze spojrzenie na cały kod i zrobienie sobie ogólnego pierwszego wrażenia).
Bezpieczeństwo
Podczas code review, programiści testują również bezpieczeństwo kodu, więc jest to numer dwa na liście kontrolnej code review, ponieważ jest to również uważane za priorytet. Na tym etapie chcesz uruchomić testy sprawdzające wiele podatności: niektóre wtyczki robią to automatycznie, a Ty chcesz użyć więcej niż jednej z nich.
Czytelność kodu
Kiedy sprawdzasz czytelność kodu, analizujesz, czy kod jest samowystarczalny, czy jest jasny i zwięzły oraz czy przestrzegane są wszystkie konwencje językowe i projektowe. Jeśli nad kodem pracował zespół programistów, chcesz również przejrzeć i upewnić się, że wszyscy członkowie zespołu przestrzegali tych samych zasad i konwencji. Jeśli masz wrażenie, że kod jest nieporządny, możesz zasugerować jego rozbicie i reorganizację w celu poprawy czytelności.
Duplikacja kodu
Możesz potraktować ten punkt jako czwarty na swojej liście kontrolnej przeglądu kodu lub sprawdzić, czy kod nie jest powielany podczas sprawdzania czytelności kodu. Jednak znaczenie posiadania listy kontrolnej przeglądu kodu polega na tym, że zmusza cię do zrobienia jednej rzeczy na raz. Może to wydawać się nieistotne, ale w rzeczywistości zmusza cię do przejrzenia kodu, skupiając się na jednym aspekcie w tym samym czasie: jest to najbardziej efektywna metoda prowadzenia uważnej kontroli.
Nazewnictwo
Jak już wspomnieliśmy, kiedy przeprowadzamy code review, nie szukamy tylko błędów, ale także sposobów na poprawienie kodu. W tym punkcie listy kontrolnej przeglądu kodu możesz przejrzeć nazwy zmiennych, stałych, pól klasowych, właściwości (i tak dalej…) i poszukać możliwości ich ulepszenia poprzez uczynienie ich bardziej opisowymi.
Dokumentacja
Po pierwsze, jeśli do projektu dołączona jest jakaś dokumentacja, upewnij się, że sprawdziłeś i przejrzałeś również ją. Po drugie, jeśli zmiany, które wprowadzasz do kodu obejmują dodanie nowej funkcjonalności, upewnij się, że zaktualizowałeś dokumentację, a następnie przejrzyj swoje aktualizacje.
Możliwość poprawy
Podczas przeglądu kodu, którego nie napisałeś w kółko, możesz mieć pomysły na dodatkowe funkcje, aspekty, które mogłyby zwiększyć wydajność lub bezpieczeństwo, lub ulepszenia w ogóle. Podczas przeglądu kodu nie tylko sprawdzasz, co tam jest, ale także udzielasz rad, jak ulepszyć projekt ogólnie lub pojedyncze jego aspekty.
Powinieneś w tym momencie zadać sobie pytanie, czy istnieją sposoby na ulepszenie projektu, abyś mógł albo samemu wprowadzić zmiany, albo poinformować autora kodu o zauważonych możliwościach.
Śledzenie zmian
Bardziej niż ostatnie pole na liście kontrolnej przeglądu kodu, powinieneś śledzić zmiany, które wprowadzasz do kodu w trakcie całego procesu przeglądu. Ważne jest, abyś podczas przekazywania informacji zwrotnej autorowi kodu (patrz następny akapit), był w stanie pokazać zmiany i wyjaśnić je.
Przekaż swoją informację zwrotną
Na koniec procesu code review możesz podzielić się z autorem kodu swoimi uwagami. Lista kontrolna przeglądu kodu pomoże Ci również w tym. Możesz przejść przez każdy punkt i każdy test, aby pokazać, co uważasz za działające, a co wymaga naprawy.
Podczas procesu przeglądu mogłeś również zauważyć, że istniały sposoby na uzyskanie tych samych wyników w sposób bardziej efektywny lub prostszy. Możesz przekazać taką informację koledze, który Cię zatrudnił (lub poprosił o przysługę): będzie to wartość dodana do Twojej pracy jako osoby sprawdzającej kod.
Jeśli w trakcie przeglądu kodu dokonałeś zmian w kodzie, chcesz mieć pewność, że nie tylko poinformujesz o tym autora (lub autorów) kodu, ale także, że jesteś w stanie wyjaśnić, dlaczego i jak dokonałeś tych zmian oraz jakie usprawnienia wnoszą one do projektu.
Podsumowując
Proces przeglądu kodowania jest okazją do rozwoju zarówno dla autora kodu, jak i osoby poproszonej o jego sprawdzenie. Jest to również okazja do poprawy jakości projektu. Nie ma powodu, aby unikać jego wykonywania.