Miroslav Holec
Premium

Školení na základě code review

Miroslav Holec   29. prosince 2021

Někteří vývojáři mají ve zvyku nejprve sbírat zkušenosti skrze články, videa a další vzdělávací aktivity, jiní skočí po hlavě do programování a snaží se výzvám čelit postupně. Vývojáři, kteří tíhnou ke druhé zmíněné skupině mnohem častěji vytváří v kódu různá skrytá rizika. Ta se projevují až při důsledném testování nebo přesunem aplikace do produkčního prostředí. Jak vývojářským týmům v této situaci pomáhám?

Pro vývojářské týmy, které začínají praktickým programováním, nemají standardní školení zásadní přínos. Velká část obsahu je pro ně již známá a na speciální scénáře není příliš mnoho prostoru. Výjimkou jsou týmy, ve kterých jsou znalosti vývojářů velmi rozdílné a školení má za cíl srovnat znalosti na stejnou úroveň. Běžně mám ale pro „Code First” vývojáře lepší řešení.

Základem je code review

Když už má tým napsanou aplikaci, je jednodušší podívat se přímo do kódu a vyhledat v něm všechna zajímavá místa. Zdrojový kód dokáže dokonale poukázat na slabá místa ve znalostech vývojářů. Čím dříve se ke kódu dostanou druhé oči, tím dříve lze zastavit stavbu aplikace a provést potřebné opravy. Mnoho špatných rozhodnutí vzniká na počátku vývoje a jejich důsledky se projevují ve veškerém novém kódu.

Podezřelá místa lze obvykle snadno rozpoznat. Čím více má konzultant zkušeností, tím spíše dokáže od oka odhadnout potenciální rizika v kódu. Existuje více oblastí, kterým se lze v code review věnovat. Obvykle začínám od povrchu a dle času se dostávám hlouběji do kódu. Obecně platí, že odhalení rizik a nedostatků v architektuře bývá snazší, rychlejší a má největší vliv na samotnou aplikaci. N-tá iterace code review už jde více pod povrch, představuje mnoho investigativní práce a jejím výsledkem jsou často spíše mikrooptimalizace nebo jen zčitelnění kódu aplikace.

Z čeho se skládá code review

A na co se při prvním code review obvykle dívám? Začínám vždy zmapováním projektů, verzí produktů a hledáním souvislostí. Snažím se pochopit, jak je celé řešení postaveno, jaké jsou použité technologie a proč. Dále už postupuji v bodech a dívám se:

  • prvně na to, na co mě upozorní přímo klient
  • dále na to, v čem cítím nejistotu nebo nesrovnalosti z konzultace
  • na vybraná místa, kde se obvykle dělají chyby
  • jinak specifické části aplikace, podezřelé postupy
  • časově náročnější analýza některých kusů kódu

Ke kódu připisuji poznámky v podobě komentářů. Píšu do nich své myšlenky a případně doplňuji odkazy do dokumentace nebo na články, kde je daný problém vysvětlen. Občas něco rovnou upravím nebo naznačím jiné řešení. Výsledkem code review je krátký report se seznamem oblastí, na které se doporučuji zaměřit. A právě z těchto oblastí lze vytvořit konzultaci nebo školení.

Konzultace a školení z code review

Konzultace je ideální v případech, kdy se v kódu objevuje mnoho drobností, o kterých je lepší si povídat nad existujícím kódem. Často se s klientem bavíme o motivaci, která vedla ke vzniku různých částí kódu. Konzultace slouží zejména k zamyšlení a hledání možností, jak eliminovat nedostatky v kódu a jak kód optimalizovat. Cílem konzultace není učit, ale spíše poukázat na určité oblasti k zamyšlení.

Když se v kódu najdou stejnorodé potíže, které mají totožnou příčinu, dává smysl vytvořit krátké školení. Povídat si teoreticky nad kódem nedává v takovém případě smysl. Místo toho připravím ukázky, ze kterých je patrné, jak daná problematika funguje. Poté se lze zpětně podívat do kódu a porovnat získanou znalost s aplikačním kódem. Problém je pak pro vývojáře mnohem čitelnější.

Závěr

V životě to funguje často stejně. Děláme chyby, ze kterých se následně poučíme. V případě vývoje aplikací však nemusíme čekat na to, až chyby objeví uživatelé. Oprava fungujících aplikací je vždy výrazně dražší než podchycení potíží na jejich počátku. Z tohoto pohledu se code review jeví jako levná a užitečná služba, která dopomáhá snížit riziko problémů a vylepšit kód aplikace.

Ve zkratce

  • vývojáři často upřednostňují vyzkoušení technologie před jejím pochopením
  • code review dokáže objevit v kódu potenciální rizika a nedostatky
  • v code review upřednostňuji konkrétní požadavky klienta
  • výsledkem code review jsou komentáře v kódu a krátký report v PDF
  • na základě code review lze vytvořit konzultaci nebo školení
  • podchycení nedostatků na základě code review je levnější než oprava v produkci
  • code review lze pravidelně opakovat a dostávat se tak hlouběji do kódu