Code Review – uczmy się na błędach

Code Review to temat często poruszany przez programistów. Wielu zastanawia się, czy ten etap w procesie wytwarzania oprogramowania jest potrzebny, a może to jest jedynie strata czasu. Ja też postanowiłam wrazić swoje zdanie w tej kwestii. Zacznę może jednak od krótkiego wprowadzenia w temat.

Co to takiego?

Praktyka w dziedzinie inżynierii oprogramowania mająca na celu wykrycie i poprawienie błędów popełnionych w kodzie w czasie fazy pisania oprogramowania, a co za tym idzie, poprawienie jakości tworzonego produktu.

Tak właśnie w sieci prezentuje się definicja Code Review zapożyczona z Wikipedii. Czy jest prawdziwa? Myślę, że tak. Jeśli chodzi mi o błędy popełnione w kodzie w czasie fazy pisania to dla mniej wtajemniczonych początkujących programistów, którzy jeszcze przez to nie przechodzili albo dopiero zaczynają, nie chodzi tutaj o sprawdzenie, czy to, co napisałeś działa, czy nie. Podczas Code Review sprawdzane są:

  • składnia
  • komentarze
  • czystość kodu
  • nazewnictwo
  • poprawne użycie wzorów jeśli zostały użyte
  • testy
  • budowa metod
  • złożoność obliczeniowa

Programista robiący Code Review nie przełącza się na brancha i go sprawdza w całości razem z błędami logicznymi. Nie o to w tym chodzi. Zwykle wygląda to tak, że otwieram listę Pull Requestów do sprawdzenia. Przeglądam diffa, czyli wszystkie zmiany wprowadzone w ramach danego zadania. Weryfikuję typowania, dok comments, składnie, nazewnictwo i ewentualnie odpowiedzialność metod. Jeśli wszystko wygląda dobrze, to leci approve, jeśli nie to albo idę do danego programisty i omawiam z nim problemy, ewentualnie spisuje pytania w komentarzach i po poprawkach sprawdzam od nowa.

Czy warto?

Moim zdaniem warto. Czasami z pośpiechu, czasami z powodu dużego zadania coś nam umyka. Może to być mała rzecz jak jakiś komentarz czy return type. Jednak bywa, że zrobimy błąd w nazewnictwie, albo – co gorsza – w złym doborze rozwiązania, który potem może spowodować duży dług technologiczny albo wywalić pół systemu.

Jest to najlepsza okazja do nauki dla osoby początkującej. Osoba sprawdzająca poszerza swoją wiedzę o systemie, wie, w którą aktualnie stronę rozwija się aplikacja. Razem mogą dojść do najlepszego sposobu rozwiązania danego problemu. Nigdy nie możemy być pewni, że nasz pomysł na rozwiązanie jest najlepszy i najwydajniejszy, może akurat ktoś inny wpadnie na lepszy pomysł.

Code review a rzeczywistość

Aby Code Review miało sens i było dobrze przeprowadzone, jest podejście programistów do tego narzędzia, o ile mogę to tak nazwać. W momencie, gdy w firmie jest konflikt między programistami lub panuje atmosfera rywalizacji, zdarza się, że CR jest wykorzystywane do walki ze sobą, a każdy komentarz traktowany jak nóż wbity w plecy i największa ujma na honorze. Jeśli u ciebie tak to wygląda, to bardzo Ci współczuje, bo to nie ma najmniejszego sensu. Najprawdopodobniej nie przyniesie to nic dobrego, a jedynie zaostrzy sytuacje.

CR powinien być traktowany jako forma pomocy, dzielenia się wiedzą, gra do wspólnej bramki, którą jest jak najlepsza jakość kodu. Dla młodego programisty to świetna okazja do nauki. Sama po sobie wiem, że w początkowych etapach mojego rozwoju programistycznego CR było jak turbodoładowanie. Działa to w podobny sposób jak nauka ortografii w podstawówce. Do dzisiaj pamiętam, jak napisałam “ktury” za co musiałam napisać 200 razy “który”, żebym do końca życia zapamiętała przez jakie  “ó” pisze się ten wyraz. Z perspektywy czasu było to dla mnie dobre, bo do dzisiaj pamiętam, jednak wtedy byłam okropnie zła, że zamiast jeździć na rolkach, musiałam siedzieć w pokoju i pisać do znudzenia jedno słowo.

Z CR jest podobnie. Na początku potrafi nas wkurzyć jak po raz setny, ktoś nam cofnie zadanie do poprawy, ale dzięki temu w kolejnym już nie popełnimy tych samych błędów. To właśnie jest zdrowe podejście do CR. Zarówno sprawdzany, jak i sprawdzający powinien do tego podchodzić w ten sposób, bo inaczej mija się z to z celem.

Polecam inne wpisy na temat Code Review warte przeczytania:

Podobne posty

Jestem programistką, która lubi mieć ręce pełne roboty. Do życia potrzebuje komputera z internetem i kubka gorącej kawy. Więcej na stronie o mnie.

Comments

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here