Code review co to?

Code Review - co to jest i dlaczego jest przydatny w programowaniu?

Programowanie składa się w większości z rozwiązywania konkretnych problemów. Dzięki naszej wiedzy i kreatywności staramy się napisać jak najlepszy kod, który będzie spełniać dane wymagania biznesowe. Istnieje proces, który może zmniejszyć liczbę błędów, poprawić umiejętności, zwiększyć bezpieczeństwo aplikacji, a przy okazji umożliwić wspólną naukę. To code review, który sprawia, że stajemy się lepsi w swojej dziedzinie i możemy bez przerwy się rozwijać. Ale po kolei, czym właściwie jest code review i na czym polega?

Czym jest code review? 

Code review, znane także jako przegląd kodu, jest fundamentalnym etapem w rozwoju oprogramowania. Stanowi on wspólny proces, w którym członkowie zespołu programistycznego analizują kod napisany przez innego programistę. Każda uwaga w nim zawarta jest ważna, gdyż jest odbiciem indywidualnego podejścia do rozwiązywania problemów.

Głównym celem tego działania jest wykrycie błędów, usprawnienie jakości oraz zapewnienie spójności kodu z wymaganiami projektu, przyjętymi standardami globalnymi, jak i tymi firmowymi. W kontekście web developmentu może to być sprawdzenie na przykład: poprawności wykorzystania frameworków takich jak Laravel czy Symfony czy poprawności w zarządzaniu danymi użytkowników. Dbamy wtedy o zapewnienie bezpieczeństwo danymi użytkowników podczas procesu uwierzytelniania lub minimalizowaniu ryzyka ataków typu SQL Injection. 

W trakcie procesu code review istotne jest sformułowanie konstruktywnych uwag, które pomogą autorowi kodu zrozumieć, co może poprawić i dlaczego. Powinno się zwracać uwagę przede wszystkim na poniższe elementy.  

Błędy i nieprawidłowości

Wskazanie konkretnych błędów jest kluczowe dla poprawy jakości kodu i eliminowania potencjalnych problemów w przyszłości. Mogą to być na przykład:

  • Błędy logiczne: źle skonstruowane, nielogiczne bądź zbyt skomplikowane warunki, prowadzące do niewłaściwych wniosków.
  • Błędy składniowe: mogą być wynikiem literówek, brakujących nawiasów czy też niepoprawnych operatorów. Często taki błąd powoduje nieprawidłowe działanie na stronie i jest spowodowane niekompletnym sprawdzeniem kodu przed oddaniem.
  • Błędy w obsłudze wyjątków: istotne w zapewnianiu niezawodności i stabilności aplikacji. W code review warto sprawdzić, czy kod obsługuje odpowiednie sytuacje wyjątkowe i czy nie są pomijane ważne scenariusze, które mogą prowadzić do błędów.

Code review może oferować sugestie dotyczące konkretnej poprawy lub alternatywnego podejścia do rozwiązania danego problemu.

Rozszerzalność i optymalizacja kodu

Komentarze skupione na rozszerzalności i optymalizacji to wskazówki, które mogą się opłacić na późniejszych etapach projektu. One nie tylko dbają o to, żeby kod działał teraz, ale również umożliwiają jego rozwój w zgodzie z przyszłymi wyzwaniami i potrzebami. Lepszym rozwiązaniem jest napisać kod gotowy na rozbudowę niż poświęcać później czas na refactoring w celu dopasowania go do nowych założeń.

Czytelność, styl kodu i zgodność ze standardami

Uwagi dotyczące czytelności kodu, takie jak sugestie dotyczące formatowania niezgodnego ze standardami, nazw zmiennych czy komentarzy to kolejny istotny element code review. W przypadku Drupala stosujemy odpowiednie komentarze przy klasach oraz ich metodach, jak również przy funkcjach z hookami. Poprawny styl kodu i zgodność ze standardami nie tylko ułatwiają pracę w zespole, ale także pomagają uniknąć potencjalnych błędów i problemów w kodzie. Dzięki jednoznacznym zasadom, wszyscy programiści pracujący nad projektem są w stanie łatwo zrozumieć oraz rozwijać kod, co z kolei przekłada się na efektywność i jakość pracy całego zespołu.

Odpowiednie formułowanie uwag

Kluczowym aspektem jest sposób formułowania uwag. Starajmy się być konstruktywni i zrozumiali, unikajmy agresywnego lub krytycznego tonu. Oferujmy argumenty i wyjaśnienia wraz z każdą uwagą, aby autor kodu mógł zrozumieć, dlaczego dane zmiany są sugerowane. Pamiętajmy, że celem code review jest poprawa jakości i zrozumienia kodu, a nie zdemotywowanie czyjegoś zaangażowania.

Pozytywny feedback

Pozytywne uwagi nie tylko wzmacniają ducha zespołu, ale także promują dobre praktyki programistyczne. Kiedy zobaczymy, że nowatorskie rozwiązanie zostało zastosowane w odpowiednim miejscu, warto to zaznaczyć. Podobnie jak dobre praktyki, które zwiększają czytelność i spójność kodu. To rodzaj wyróżnienia, który nie tylko cieszy programistę, ale też zachęca do kontynuowania używania tych samych wzorców w przyszłości.

Dodatkowo, pozytywne komentarze w procesie code review nie tylko budują więzi w zespole, ale też skupiają uwagę na tym, co już działa dobrze. To swoiste oznaczenie znakomitej pracy, co z kolei może stać się inspiracją dla innych do podniesienia poprzeczki i dążenia do doskonałości. Dlatego w trakcie tego pełnego kontrastów procesu, warto pamiętać o równowadze między wykrywaniem błędów, a nagradzaniem za doskonałość, tworząc tym samym atmosferę współpracy i rozwoju.

Korzyści płynące z code review

Przegląd kodu to proces, który niesie za sobą wiele dobrego. Przyjrzyjmy się kilku korzyściom wynikającym z code review. 

Lepsza jakość i czytelność kodu

Dzięki code review potencjalne błędy i niedoskonałości są wykrywane odpowiednio wcześnie, co pozwala na ich poprawienie jeszcze zanim trafią na produkcję. To z kolei minimalizuje koszty napraw i utrzymuje stabilność aplikacji. Dla web developerów dbałość o czytelność kodu jest - biorąc pod uwagę częste zmiany zespołu - zupełnie kluczowa. Przejrzyste komentarze, spójny styl nazewnictwa zmiennych i funkcji oraz dobrze sformatowany kod przyczyniają się do zwiększenia zrozumiałości kodu dla innych programistów, ułatwiając tym samym współpracę w zespole.

Sprawdzenie kodu pod kątem przyjętych w organizacji praktyk (np. bezpieczeństwa)

Przegląd kodu stanowi również doskonałą okazję do przestrzegania najlepszych praktyk, zwłaszcza w obszarze bezpieczeństwa. W przypadku PHP, zwrócenie uwagi na unikanie konkatenacji zmiennych w zapytaniach SQL oraz stosowanie filtrowania danych wejściowych pomaga minimalizować ryzyko ataków typu SQL Injection. Zwracając uwagę na to, aby używać najnowszych rozwiązań (np. nowości z PHP 8.x) autor sprawia, że kod nie będzie przestarzały, a osoba sprawdzająca zaoszczędzi czas.

Weryfikacja zgodności z makietami i celami biznesowymi projektu

W kontekście tworzenia aplikacji internetowych, code review pozwala na weryfikację, czy implementacja jest zgodna z wyglądem i zachowaniem przewidzianym w makietach/designach interfejsu użytkownika. Ponadto, gwarantuje, że kod realizuje założone cele biznesowe, zapewniając spójność między kodem źródłowym a wymaganiami klienta. Oczywiście wymaga to znajomości kontekstu, innych klas, funkcji i jak działa reszta strony internetowej. 

Dzielenie się wiedzą

Przegląd kodu to świetna okazja do wymiany wiedzy między członkami zespołu. Mniej doświadczeni programiści mogą uczyć się od bardziej doświadczonych kolegów i koleżanek, co przyczynia się do podnoszenia kompetencji całego zespołu. Nierzadko jest tak, że osoba młodsza stażem chce się wręcz pochwalić znajomością ciekawych sztuczek czy nowych rozwiązań i osoby będące w branży o wiele dłużej mogą spojrzeć na to z zaciekawieniem i poszerzyć swoje horyzonty. 

Code review - dzielenie się wiedzą

Dobre praktyki dla autora kodu

Przygotowując się do przeglądu kodu, autorzy powinni kierować się kilkoma kluczowymi zasadami, które nie tylko ułatwią proces przeglądu, ale także wpłyną na jakość i zrozumiałość tworzonego kodu. Wiele z nich można wydedukować z poprzednich akapitów, ale jest kilka rad, o których nie było wcześniej mowy. 

Dokładne komentarze 

Komentarze mogą być kontrowersyjnym elementem w kodzie - niektórzy uważają, że ich obecność jest nieoceniona, bo pomagają zrozumieć skomplikowane fragmenty oraz decyzje projektowe. Z drugiej strony, jeśli coś jest zbyt skomplikowane, że wymaga komentarza, to powinno zostać uproszczone tak, żeby kod komentował się sam. Zatem stosowanie komentarzy bądź nie, zależy od podejścia konkretnych zespołów.

Testy

Zwłaszcza w kontekście PHP czy Drupala, warto jest użyć chociażby Codeception do wykonania testów, czy kod nie wpływa na podstawowe funkcjonalności strony internetowej. Jeśli funkcjonalność kodu dotyka kluczowej logiki, warto napisać swoje testy, które zdecydowanie wpłyną pozytywnie na jakość pracy w przyszłości.

Wady code review

Oczywiście, choć code review to ważny proces w rozwoju oprogramowania, ma również pewne potencjalne wady. Oto kilka przykładów.

Opóźnienia

Przegląd kodu może wydłużać czas dostarczenia nowych funkcji lub poprawek do produkcji. Proces ten może się opóźniać, jeśli nie ma wystarczającej liczby osób dostępnych do przeglądów lub jeśli są to długotrwałe sesje, podczas których wyłapuje się dużo błędów i zadanie wraca wielokrotnie do developera.

Koszty czasowe

Code review wymaga zaangażowania zasobów ludzkich, zarówno autorów, jak i recenzentów (reviewers) kodu. To może skutkować niższą wydajnością pracy, zwłaszcza w małych zespołach lub w projektach o krótkich terminach. Inni developerzy muszą poświęcić na to czas i oderwać się od swoich zadań.

Blokady

W przypadku, gdy osoba odpowiedzialna za przegląd jest zbyt rygorystyczna lub ma małą dostępność, może to prowadzić do opóźnień, co może z kolei utrudniać dostarczanie szybkich poprawek lub innowacji. Wtedy wąskie gardło w całym procesie jest bardzo proste do wskazania. Rozwiązaniem może być zaangażowanie do code review całego zespołu, tak jak robimy to w Droptica. O tym piszemy w dalszej części tekstu. 

Brak wiedzy o kontekście

Osoba przeprowadzająca przegląd kodu może nie posiadać pełnej wiedzy na temat dziedziny problemu, z którą wiąże się kod, co może prowadzić do fałszywych lub nieodpowiednich uwag. Wyjaśnianie takich elementów również zabiera cenny czas.

Konflikty interpersonalne 

Komentarze i sugestie w trakcie code review mogą być źródłem konfliktów między członkami zespołu, jeśli nie są one formułowane w sposób konstruktywny. Nie należy łączyć kodu z programistą, który go napisał. Komentowany jest kod, a nie osoba.

Jakość recenzji

Jeśli przegląd kodu jest wykonywany niedokładnie lub nieprofesjonalnie, istnieje ryzyko, że potencjalne błędy lub niedoskonałości nie zostaną wykryte.

Zmęczenie i błąd pomijania

W przypadku długotrwałego procesu przeglądu, reviewerzy mogą się zniechęcić lub pomijać pewne elementy kodu, co może prowadzić do niezauważenia istotnych problemów.

Mimo tych potencjalnych wad, korzystanie z procesu code review nadal przeważa w kierunku korzyści. Pozwala poprawić jakość oprogramowania, zwiększyć zrozumienie kodu w zespole oraz umożliwiać zdobywanie wiedzy od innych programistów. Warto jednak zdawać sobie sprawę z tych potencjalnych wad i próbować je minimalizować poprzez odpowiednie zarządzanie procesem przeglądów oraz komunikacją w zespole.

Code review - co to

Code review w Droptica

W Droptica code review jest praktykowany przez każdego członka zespołu niezależnie od stopnia doświadczenia. To zachęca do wspólnego poszukiwania i eliminowania potencjalnych problemów oraz podtrzymuje kulturę uczenia się i doskonalenia się w zespole.

W ramach tego procesu, zwraca się szczególną uwagę na przestrzeganie dobrych praktyk oraz unikanie użycia przestarzałego kodu poprzez stosowanie najnowszych metod i narzędzi. To podejście pozwala na tworzenie oprogramowania wydajnego, aktualnego i zgodnego ze współczesnymi standardami.

Przyjęta procedura w Droptica obejmuje następujące kroki.

Inicjacja pull requesta

Przed przystąpieniem do przeglądu, autor kodu tworzy Pull Request (PR), który zawiera wprowadzone zmiany. Zadaniem PR jest umożliwienie recenzentowi przejrzenia i oceny wprowadzonych zmian. Dobrą praktyką jest też załączenie zrzutu ekranu i opisu zmian.

Ograniczona liczba linii kodu

W celu efektywnego przeglądu, PR powinien zawierać maksymalnie 200-400 linii kodu. W przypadku bardziej rozbudowanych zmian, zaleca się podzielenie ich na mniejsze części, co ułatwia analizę i skupienie się na szczegółach. Oczywiście dołączenie configów z Drupala może zaburzyć ilość kodu, jaka jest w PR, także wtedy ta zasada nie zawsze jest stosowana.

Rozwiązywanie konfliktów

W przypadku wystąpienia konfliktów w PR, autor stara się je najpierw rozwiązać poprzez zaktualizowanie swojego kodu o zmiany z głównego brancha (np. develop czy master). W razie trudności, zespół może zasięgnąć pomocy Tech Leada.

Właściwy skład recenzentów

Dobór recenzentów opiera się na założeniu, że doświadczenie jest ważnym czynnikiem, ale nie jedynym. Idealnym rozwiązaniem jest zestawienie doświadczonego developera z mniej doświadczonym, co wspiera różnorodność w procesie przeglądania. Często do tej roli wybierany jest Tech Lead, który czuwa nad większą liczbą projektów, samemu "wypychając" niewielką ilość kodu, a jedynie koordynując i czuwając nad jakością prac.

Testy i standaryzacja

Każdy projekt posiada skonfigurowany pipeline do weryfikacji standardów kodowania. W przypadku błędów, developer zobowiązany jest do ich poprawienia przed zatwierdzeniem zmian. Jest to także sposób na sprawdzenie, czy środowisko lokalne jest poprawnie skonfigurowane i programista używa tzw. Quality Tools takich jak np. Code Sniffer.

Akceptacja i zatwierdzenie

Zakończeniem procesu code review jest akceptacja zmian przez recenzentów, wyrażana za pomocą przycisku "approve". To potwierdza, że kod jest gotowy do scalenia z docelowym branchem.

Podsumowując, proces code review w Droptica jest kompleksowy i koncentruje się na zachowaniu wysokich standardów jakości kodu, zarówno pod względem czytelności, jak i zastosowania najnowszych praktyk programistycznych. To podejście skupia się na współpracy zespołowej i ciągłym doskonaleniu, zapewniając skuteczną analizę kodu i utrzymanie spójności projektów.

Code review - podsumowanie

W świecie programowania, code review jest jak lupa skierowana na drobiazgową inspekcję naszego kodu. To nie tylko szansa na wychwycenie niedoskonałości, ale także okazja do dzielenia się wiedzą, ucząc się od siebie nawzajem. Dzięki code review podnosimy jakość, spójność i bezpieczeństwo kodu, tworząc wartościowy produkt.

W Droptica każdy, niezależnie od stażu, jest włączony do tego procesu, a konkretne standardy sprawiają, że przegląd kodu jest kompleksowy i dokładny. Możemy w ten sposób prowadzić projekty w spójny sposób i dostarczać kompleksowe rozwiązania dla naszych klientów. Należy pamiętać, że code review nie powinno być przykrym obowiązkiem, a metodą na utrzymanie jak najlepszego poziomu naszego kodu. A to bezpośrednio wpływa na jakość naszej aplikacji. 

Po więcej cennych informacji ze świata IT zapraszamy na naszego bloga!