Code review — je proces kontroly zdrojového kódu jedním nebo více vývojáři před jeho integrací do hlavní větve projektu. V kontextu Gitu a platforem jako GitHub, GitLab nebo Bitbucket je code review realizováno pomocí pull request: autor vytvoří PR, jmenuje recenzenty a ti kontrolují změny, zanechávají komentáře a požadavky na opravy. Podle Google Engineering Practices (2026) code review zlepšuje kvalitu kódu, šíří znalosti v týmu a snižuje počet defektů v produkci. Dobré review není kontrola, ale spolupráce ve formě rozvíjejícího dialogu.
Hlavní body
Code review — je systematická kontrola kódu kolegy před jeho integrací. V kontextu Gitu to znamená: vývojář vytvoří pull request se změnami, jmenuje recenzenty a ti studují diff, zanechávají komentáře a vynášejí verdikt. Recenzent může požadovat změny (Request Changes), schválit PR (Approve) nebo zanechat obecný komentář.
Code review má pět cílů: zlepšení kvality kódu (odhalování defektů před tím, než se dostanou do produkce), šíření znalostí (recenzent se dozvídá o nových přístupech, autor dostává zpětnou vazbu), dodržování standardů (kontrola souladu s code style a architektonickými rozhodnutími), snížení bus factor (kód nezná jen jeden vývojář) a budování kultury odpovědnosti (autor píše pečlivěji, protože ví, že kód bude kontrolován).
Opakem code review je blind commit: vývojář tlačí změny do společné větve bez review. Tento přístup je povolen pouze v projektech pro jednoho uživatele nebo pro naléhavé hotfixy s následným review. V profesionálním týmovém vývoji je code review povinnou fází pro každou změnu, včetně oprav dokumentace a konfigurace.
Code review by mělo být systematické, ne chaotické. Zkušení recenzenti kontrolují kód v určitém pořadí: nejprve architektura a logika, poté testy, pak bezpečnost a výkon, a nakonec — styl a pojmenování. Toto pořadí zaručuje, že kritické problémy budou zaznamenány dříve, než se recenzent unaví.
Architektura a logika: řeší kód úlohu, existují zbytečné abstrakce, jsou dodržovány principy SOLID a DRY. Složitý kód, který je při prvním čtení obtížné pochopit — signál, že vyžaduje refaktorování. Recenzent se musí ujistit, že kód dělá přesně to, co je uvedeno v úkolu, a nemá vedlejší účinky mimo svou oblast odpovědnosti.
Testy: pokrývají nové testy všechny scénáře — pozitivní, negativní, okrajové případy. Procházejí stávající testy po změnách. Existují flaky testy, které nestabilně padají. Bezpečnost: absence SQL injekcí, XSS, úniků citlivých dat přes logy nebo API odpovědi. Výkon: účinnost algoritmů, nadbytečné dotazy do databáze, úniky zdrojů.
Omezení velikosti PR — nejdůležitější metrika účinnosti code review. Výzkum Cisco (2015) a následné experimenty SmartBear a Google ukázaly: při objemu review přes 400 řádků schopnost recenzenta odhalovat defekty prudce klesá. Pokud PR přesahuje 400 řádků, chyby jsou odhalovány s pravděpodobností ne vyšší než náhodnou.
Optimální velikost: 200-400 řádků na jeden PR. Takový objem může recenzent zkontrolovat za 30-60 minut, při zachování koncentrace. Google doporučuje ne více než 200 řádků na jedno kolo review s plnou koncentrací. Pokud je změn více — úkol by měl být rozložen do několika po sobě jdoucích PR, z nichž každý přináší logicky dokončenou změnu.
Čas review: do 24 hodin od okamžiku vytvoření PR. Pokud se review protáhne na několik dní, kontext úkolu se ztrácí a autor musí trávit čas obnovováním kontextu při odpovídání na komentáře. Týmy s vysokou kulturou code review stanovují SLA pro review: například 4 hodiny pro kritické změny a 24 hodin pro běžné.
| Velikost PR | Čas review | Účinnost |
|---|---|---|
| Do 200 řádků | 15-30 minut | Vysoká — až 90% defektů |
| 200-400 řádků | 30-60 minut | Střední — až 70% defektů |
| 400-1000 řádků | 1-3 hodiny | Nízká — méně než 40% defektů |
| Více než 1000 řádků | 3+ hodiny | Kriticky nízká — ~10% defektů |
Tón komentářů — je klíčový pro účinnost code review. Komentář "Toto je nesprávné" vyvolává obrannou reakci a neposkytuje autorovi užitečné informace. Nejlepší formulace je otázka-návrh: "Co si myslíš o tomto přístupu?", "Zde může dojít k NPE, pokud user == nil. Možná přidat guard?". Otázky méně tlačí a stimulují diskusi.
Struktura dobrého komentáře zahrnuje tři části: co je špatně, proč je to problém a jak to opravit. Příklad: "V této smyčce se používá O(n²) kvůli vnořenému contains, což může zpomalit při 10k+ záznamech. Zkus nahradit Setem pro vyhledávání O(1)". Taková formulace současně ukazuje problém, vysvětluje jeho důležitost a nabízí řešení — autor nemusí hádat.
GitHub a GitLab podporují suggestions — vestavěné návrhy změn kódu. Recenzent může napsat: "```suggestion Filtrovat prázdné řádky před zpracováním```" — a autor aplikuje změnu jedním kliknutím. To zrychluje malé opravy a snižuje počet kol review. Pro velké opravy je lepší napsat obecný komentář než vkládat velké bloky do suggestion.
# Šablona pro dobrý komentář code review
# ŠPATNĚ: „Tento kód je nesprávný“
# DOBŘE: „Můžeme přijít o data při prázdné odpovědi.
# If response.data == nil, the guard returns nil,
# and user sees empty screen without error.
# Maybe add a fallback error message?"
# Syntaxe návrhu GitHub:
# ```suggestion
# let result = try? parse(response, fallback: .defaultValue)
# ```
Efektivní workflow review je založeno na čtyřech fázích. První — autor připravuje PR: píše srozumitelný název (např. "feat: add password reset screen"), přidává popis změn, odkazy na úkol v trackeru a pokyny pro testování. Druhá — autor jmenuje recenzenty pomocí auto-assign (na základě CODEOWNERS) nebo ručně.
Třetí fáze — recenzent kontroluje kód a zanechává komentáře. Čtvrtá — autor provádí opravy, odpovídá na komentáře a žádá o opakované review. Cyklus se opakuje, dokud není získáno schválení. Po schválení autor provádí merge (nebo merge provádí bot). Automatizace prostřednictvím Mergify nebo GitHub Auto-merge zrychluje závěrečnou fázi.
Důležitý prvek workflow — správa zastaralých PR. Pokud PR visí bez review déle než 3 dny, proces se blokuje. Řešení: rotace recenzentů (pokud je jmenovaný recenzent nedostupný), oznámení přes Slack/Teams, časový limit pro review (SLA). V některých týmech je PR bez review déle než 7 dní automaticky uzavřen a autor vytváří nový po synchronizaci s main.
První chyba — povrchní review. Recenzent letmo prohlíží diff, neproniká do logiky a mačká Approve. Příčiny: velký PR, deadline, únava. Důsledky: bugy se dostávají do produkce. Řešení: pokud nemáte čas na kvalitní review — napište upřímně "Dnes nemohu zkontrolovat, přesuňte na zítra" místo formálního schválení.
Druhá chyba — nadměrná kritika (nitpicking). Recenzent zanechává desítky komentářů o stylu formátování, pojmenování proměnných, triviálních detailech. To demotivuje autora a protahuje review. Řešení: StyleGuide a lintery by měly kontrolovat styl automaticky. Člověk v review kontroluje logiku, architekturu a bezpečnost.
Třetí chyba — review bez otázek. Pokud recenzent dává pouze Request Changes a Approve, ale neklade otázky, ztrácí příležitost naučit se něco nového. Nejlepší indikátor zdraví code review je přítomnost diskusí, ve kterých se obě strany učí něco nového. Pokud je review monologem jednoho z účastníků — proces je rozbitý.
Často kladené otázky
Zrevidovat — provést code review pull requestu: zkontrolovat změny na soulad s kvalitativními standardy, najít potenciální chyby, zhodnotit architekturu a zanechat konstruktivní komentáře. Po úspěšném review recenzent schvaluje PR (Approve), což umožňuje sloučení do cílové větve.
200-400 řádků — optimální objem jednoho PR. Výzkumy Cisco (2015) a Google ukazují, že při větším objemu účinnost odhalování defektů prudce klesá. Pokud je změn více — úkol by měl být rozložen do několika logicky dokončených PR, každý maximálně 400 řádků.
V pořadí priority: architektura (zda bylo zvoleno správné řešení), logika (správnost, zpracování chyb, okrajové případy), testy (pokrytí nových scénářů), bezpečnost (injekce, úniky dat) a výkon. Styl a formátování přenechejte linterům.
Konstruktivní a respektující. Místo "Toto je nesprávné" — "Co si myslíš o tomto přístupu?". Místo tvrzení — otázky. Vysvětlujte, proč je určité řešení problematické, nejen na něj upozorňujte. Code review je dialog kolegů, ne zkouška.
Doporučený čas — do 24 hodin. Pro kritické změny — do 4 hodin. Pokud recenzent neodpovídá déle — obraťte se na vedoucího týmu pro přeřazení. Dlouhé čekání na review zpomaluje vývoj a nutí autora přepínat na jiné úkoly, čímž ztrácí kontext.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také