Pozor na chyby v kóde - code review

Každý človek je omylný, nikto nie je dokonalý, ani programátori nie sú výnimkou. Pri programovaní webov, e-shopov, či nášho redakčného systému BUXUS vzniká veľké množstvo riadkov programového kódu.

Pri písaní knihy v materinskom jazyku, dochádza bežne k prelkepom alebo napr. slovosledu zlému. Veľmi podobné je to aj pri programovaní. Programátori používajú tiež istú formu vyjadrovania sa pomocou „jazykov“. Uvedomme si, že autor píšuci v rodnom jazyku má výhodu oproti programátorovi, pretože svoj jazyk používa celý život. Učil sa ho doma, v škole dlhé roky, denne ho používa a komunikuje pomocou neho ústne aj písomne. A predsa sa z času na čas pomýli.

Môže byť teda programátor bez chyby?

E-shop developer sa počas svojej práce vyjadruje písomne a hneď v niekoľkých cudzích jazykoch naraz. V našej firme sú to hlavne jazyky PHP a JavaScript, ale aj mnohé iné. Je preto prirodzené očakávať istú mieru chybovosti. Pri chybe sa stretávame viac so syntaktickými chybami, ale pri písaní kódu na programátora striehnu aj iné nástrahy.

Kód musí byť okrem iného:

  • bezpečný,
  • univerzálny,
  • znovupoužiteľný,
  • rozšíriteľný,
  • ľahko čitateľný alebo zrozumiteľný pre iných,
  • rýchly a efektívny,
  • pripravený na možné výpadky a problémy,
  • musí sa snažiť odhaliť neočakávané situácie
  • a musí mať mnoho ďalších aspektov, ktoré súvisia už s konkrétnym programovacím jazykom. Napríklad aj taká responzívnosť na mobilné zariadenia.
Programátor má preto neľahkú úlohu a jeho kód by nemal obsahovať žiadne syntaktické, logické ani architektonické chyby.

Code review

Tak isto ako kniha prechádza korekciou, môžeme podobné postupy aplikovať aj pri kontrole napísaného kódu. Túto kontrolu nazývame Code review. Ide o pomerne bežnú súčasť fungovania softvérových firiem. Je súčasťou moderných štandardov a postupov používaných pri vývoji. Uičko patrí medzi moderné firmy, ktoré berú code review s plnou vážnosťou ako nevyhnutnú súčasť dobrého vývoja softvéru.

Programátori denne prichádzajú do kontaktu s obrovským množstvom kódu. Každý developer musí vedieť, na čo slúži konkrétna časť kódu, aby ju vedel použiť na inom mieste. Taktiež sa môže stať, že ak túto časť použije na inom mieste, práve môže prísť ku chybe. Túto chybu musí vedieť ad1 odhaliť a ad2 napraviť. Všetky zmeny v kóde musí dostatočne okomentovať, aby aj iní programátori vedeli, že niečo opravil a pridal do kódu (mimochodom - toto je dosť dôležité a niekedy podceňované). Programátori sa navzájom môžu upozorniť na chyby a tak vedia predchádzať možným problémom. V našej firme používame systém Phabricator, ktorý pomáha recenzovať časti kódu, ale aj uložené zmeny v kóde.

Postup je jednoduchý:

  1. programátor upraví kód a uloží záznam o zmenených riadkoch (tzv. commit) pomocou systému git na jeho počítači,
  2. pošle zmeny na “code-review” do systému Phabricator a určí ľudí, ktorí majú code review vykonať (tzv. revieweri / recenzenti),
  3. recenzentom príde email s odkazom na recenzovaný commit v systéme Phabricator,
  4. recenzenti okomentujú jednotlivé riadky kódu a schvália commit alebo si vyžiadajú zmeny, 
  5. programátorovi prídu e-maily s komentármi recenzentov,
  6. programátor buď zmení to čo mu bolo vytknuté, alebo vysvetlí svoje rozhodnutia,
  7. kroky 1-6 sa opakujú až pokým recenzenti schvália commit,
  8. Phabricator oznámi programátorovi, že jeho zmeny boli schválené a sú pripravené na nasadenie do testovacej prípadne rovno ostrej prevádzky,
  9. programátor nasadí zmeny (a môže ísť na kávu...).

Nezaberá to zbytočne veľa času, komentovať cudzí kód?

Prechádzanie "cudzieho kódu" síce zaberá nejaký čas, ale berieme to ako nevyhnutnú súčasť vývoja na to, aby sme mohli produkovať naozaj kvalitný kód, ktorý je nevyhnutný pre tvorbu kvalitného e-shopu alebo webu.

Code review checklist (zdroj)

Preto aj pri vývoji CMS BUXUS prejde každá zmena cez tento proces a cez viacero programátorov. Vďaka tomu sú vedomosti o vnútornej funkcionalite BUXUSu rozdelené medzi viacero ľudí, ošetrených je viac prípadov, samotný systém je vďaka tomu kvalitnejší.

Tento proces taktiež podporuje aj vnútrofiremné vzdelávanie, pretože programátori sa “dotýkajú” aj kódu svojich kolegov a vidia iné riešenia a algoritmy. Získajú tak nové skúsenosti a vedomosti, ktoré sú veľmi užitočné v každodennej praxi. Náš tím sa neustále rozrastá a je dôležité, aby sa noví kolegovia dokázali rýchlo a ľahko zorientovať v kóde CMS BUXUSu, vedeli ako funguje a vedeli pohotovo zmeniť alebo doprogramovať nové funkcionality aj podľa potrieb našich zákazníkov.

Mýliť sa je ľudské, ale ak môžeme, mali by sa chybám aspoň v čo najväčšej miere vyhýbať. Pri programovaní to platí niekoľkonásobne. Code review je dobrým pomocníkom pri práci programátorov. Dáva im to možnosť rásť, posúvať sa ďalej. Vidieť cudzí kód je ako prečítať si novú knihu. V recenzovanom kóde môže byť veľa zaujímavého a poučného. Mnoho nového, čo sa dá využiť pri písaní iného kódu. Hľadaním chýb sa zrýchľuje programátorova práca, pretože ak chybu nájde a opraví, je veľká šanca, že sa jej nabudúce vyhne.

Zdroj:

https://sw-samuraj.cz/2014/07/code-review-checklist/?fbclid=IwAR2DqYl5jioJFZYnhJ_XiD6y_ptzuFQY9ocvGDYPiV0w2D-LjsgBpcfTZ1o