Miroslav Holec
Premium

Solution Code Review

Miroslav Holec   3. února 2022

Jaký je Váš vztah ke code review? Bezesporu se jedná o praktiku, která pomáhá začistit aplikační kód, odhalit chyby nebo potenciální rizika a svým způsobem může pomoci i vzájemnému sdílení znalostí v týmu. Pravidelná code review mají i psychologický význam, protože vývojáři mají větší tendenci nad kódem přemýšlet, počítají-li předem s jeho konfrontací. V různých firmách probíhají code review různým způsobem, o čemž jsem se v minulých letech přesvědčil na různých projektech. Dnes bych ale chtěl popsat code review celé solution.

Záznam přednášky

Kromě článku si můžete pustit záznam mé přednášky, kde jsem o Solution Code Review mluvil.


Běžná code review

Dnešní článek nebude o klasických code reviews. Bylo o nich napsáno plno článků i knih. Víme, že code review jsou vždy spíše k užitku a víme, že za ně musíme „zaplatit” trochou času. Dají se dělat různými způsoby. Když se dělají dobře, jejich výhody s přehledem zahladí čas, který na ně vynakládáme. Některým týmům funguje lépe synchronní varianta, jiným asynchronní, někomu pravidelné a někomu občasné.

Jádro věci tkví v tom, co je součástí code review. Mnoho oblastí lze dnes do značné míry automatizovat nebo minimálně zjednodušit použitím vhodných nástrojů. Společné konvence, komentáře v kódu, překlepy nebo komplexita kódu jsou automatizovatelné. Když dojde na code review, vývojáři obvykle řeší určitou implementaci funkcionality. Sledují názvy tříd a metod, zvolené design patterny, logické řešení problému, optimalizace kódu, pokrytí jednotkovými testy a další. Pro většinu těchto potřeb je výhodné znát daný projekt a kontext ve kterém se pracuje. Jsem přesvědčen, že takto popsané code review dává smysl zejména od člena týmu. Externí kolega z jiného týmu nebo projektu v tomto ohledu moc nepomůže. Ale...

Důležitý a neviditelný kód

... pak je tu hromada kódu, který už byl napsán v dobách minulých. Často se jedná o různé části infrastruktury nebo knihovny napsané nad frameworkem. Nad těmi se v běžném code review moc nepřemýšlí. Tyto části kódu vývojáři berou obvykle jako hotovou věc a vyvíjené řešení se snaží na ně napasovat. Během code review se tedy řeší, zda bude například import dat správně fungovat, zda do sebe jednotlivé díly skládačky zapadnou a zda to řešení bude dostatečné rychlé. Nikdo už ale moc neřeší, že ten repository pattern je koule u nohy, nebo že logování do relační databáze není zrovna rychlé a ve spojení s EF Core dvakrát spolehlivé. Každý se spoléhá na onu metodu v repository, která umí vrátit vyfiltrovanou kolekci a nikdo už moc nepřemýšlí nad tím, zda to po těch letech dělá správně a využívá naplno všeho, co dnešní ORM verze nabízí.

image-20220206100816011

Během roku 2021 se na mě někteří klienti obrátili s tím, že už naskočili do ASP.NET Core, ale nejsou si jisti, zda zatáhli za správný konec lana. Školení jsou skvělý odrazový můstek pro rychlý start s webovým vývojem, praxe ale přináší mnoho výzev, které je občas nutné rychle vyřešit. Ne vždy se to podaří udělat nejlépe a nejefektivněji. Ve spěchu je prioritní, aby kód dělal co dělat má, bez ohledu na kvalitu řešení. Někteří klienti mě zkrátka požádali o druhé oči, které se na celé řešení podívají „z letadla” a vytipují místa, která si zaslouží větší pozornost. Zjistil jsem, že vždy najdu něco, co dopomůže k lepšímu kódu a v některých případech se mi podařilo i odvrátit nebezpečí před nasazením do produkčního provozu.

Solution Code Review

Tím se dostáváme k jádru věci. Ne každý tým napadne, že může o pomoc požádat. Školení jsou super pro rychlé začátky, přednášky se zaměřují na konkrétní témata, ale ani jeden formát neřeší individuální potřeby vývojářů. Přednáška je vždy obecný derivát vytvořený pro určitou skupinu vývojářů. Proto jsem se rozhodl, že vývojářům nabídnu druhé oči v podobě solution code review. Celou službu jsem poskládal na základě případovek z roku 2021. Vstupem je vybraný kód zákazníka, výstupem jsou komentáře v gitu, report z code review a doporučené řešení dalšího vzdělávání. Vysvětlím podrobněji.

Podklady od týmu: návrh NDA, zdroják v GITu, intro call

Funguje to tak, že tým mi pošle návrh NDA. Někdo NDA nepotřebuje, někdo využije mou šablonu. NDA elektronicky podepíšu a vývojáři mi přidělí přístup do GITu, nebo extrahují část aplikace na kterou mám vidět a pošlou ji v ZIPu. Dále si společně hodinku popovídáme přes Zoom nebo Teams. Vysvětlíte mi o čem aplikace je, kde panují nejistoty a můžete si vybrat oblasti, na které se mám prioritně podívat.

Podstata solution code review

Na základě dohody projdu kód a zaměřím se na oblasti, které považuji za problémové ve spojení s těmi, které klient vidí jako prioritní. Na základě povídání přes Zoom často vytuším, kde mohou být další problémy. Vývojář občas nechtěně prozradí něco podezřelého. Solution code review lze iterativně opakovat, takže v první iteraci vyřešíme velké problémy nebo předám zásadní tipy a v dalších iteracích lze jít více pod povrch. Když už se na mě někdo obrátí, není to nikdy proto, abych řešil malichernosti typu naming conventions.

image-20220206100921031

Code review věnuji minimálně jeden den. Když si potřebuji určité části zreplikovat nebo se například dívat do paměti, abych si ověřil určité teorie, zabere mi to i více času. Samotný kód zákazníka totiž nespouštím (není to potřeba).

Výstupy ze solution code review

Během code review přidávám konkrétní komentáře do kódu a přidávám odkazy do dokumentace nebo na související zdroje. Z opakujících se problémů nakonec vytvořím seznam klíčových oblastí a sepíšu PDF report, který si vývojáři mohou v klidu přečíst. Výsledkem tedy je seznam oblastí k prostudování s konkrétními případy odchycenými v kódu. Komentáře nakonec commituji do samostatné branche. Na základě objevů pak doporučuji další postup. Buď je to konzultace, ucelené školení nebo navrhuji osnovu školení na míru. Školení mohu na zakázku připravit nebo papír můžete odnést k někomu, kdo vám z témat školení vytvoří.

Závěr

Solution code review je doplňkem ke klasickým code review. Udělá ho pro vás člověk, který vaši aplikaci ideálně nezná a zaměří se tak s jistotou na to, co v týmu považujete za standard. Čím více zkušeností má daný člověk s architekturou různých aplikací v různých týmech, tím více tipů vám dokáže předat. Pokud se vám myšlenka solution code review líbí, přijměte pozvánku na mou přednášku.

Ve zkratce

  • běžná code review pomáhají zejména s konkrétní implementací požadavků
  • code review dokážou za trochu času ušetřit mnoho finančních prostředků
  • vývojáři po čase trpí slepotou vůči architektuře a různým částem aplikace
  • vytvořil jsem službu solution code review pro mé klienty
  • součástí solution CR jsou komentáře v kódu, PDF report a tipy pro studium
  • na únor jsem připravil zdarma online přednášku