Když vybíráte licenci pro firemní projekt, rozhoduje odpovědnost

Z Mazovia

Akce popisujte jako události, ne jako příkazy k nastavení hodnot. Místo SET_ITEMS použijte ITEMS_LOADED s daty v payloadu. Ušetříte tím logiku v reducery a získáte místo pro vedlejší efekty. Reducery musí zůstat čisté: žádné volání API, žádné Date.now(), žádné náhodné hodnoty. Veškerou asynchronní práci řešte v thunk funkcích nebo v middleware a výsledek předejte akcí. Kdo míchá fetch do reduceru, dřív nebo později narazí na nekonzistentní stav.

Druhým častým problémem je míchání úrovní abstrakce. Na jedné řádce voláte databázi, o pár řádků níže řešíte formátování data a za tím vším se skrývá ruční práce s polem. Držte jednu úroveň: buď funkce skládá jiné funkce, nebo pracuje s konkrétními hodnotami. Pomůže pojmenovávat mezivýsledky. Místo vnořeného výrazu s pěti tečkami si vytvořte proměnnou `aktivniUzivatele` a teprve tu dál zpracujte. Kód se tím prodlouží o dva řádky, ale zkrátí se doba hledání chyby.

Čistý kód v JavaScriptu není o estetice, ale o tom, aby se v něm dalo rychle najít problém a bezpečně měnit chování. Největší zdroj zmatku bývají funkce, které dělají příliš mnoho věcí najednou. Pokud funkce načítá data, upravuje je, zapisuje do globálního stavu a ještě mění DOM, každá změna je riskantní. Rozdělte ji na menší celky, z nichž každý má jednu odpovědnost. Konkrétně: pojmenujte funkci podle toho, co vrací nebo jaký stav vytváří, a pokud název obsahuje spojku „a" (například „nactiAUprav"), je to signál k rozdělení.

Začni tím, že si vybereš jeden jazyk a jednu oblast. Kombinace backend v Javě nebo v Pythonu, případně frontend v JavaScriptu, stačí. Rozšiřování do pěti technologií najednou vede k tomu, že v žádné nejsi použitelný. Vytvoř si tři projekty, které spolu nesouvisí: jeden jednoduchý nástroj na zpracování dat, jeden s databází a jeden s voláním externího rozhraní. Ke každému napiš krátké README, co to dělá, jak to spustit a co jsi musel vyřešit. To je materiál, který na pohovoru obstojí lépe než seznam kurzů.

Základem je rozdělit práci na dvě samostatné položky. První je samotné review – čas, který stráví kolega čtením, komentováním a diskusí. Druhou je zapracování připomínek, tedy přepis kódu, opětovné testy a druhé kolo schválení. Tyhle dvě věci se často slévají do jedné a pak chybí. Do odhadu je pište zvlášť, protože mají jiný průběh i rizika.

Častá chyba je ignorování chybějících hodnot. Filtr ?category= s prázdnou hodnotou nesmí znamenat totéž co absence parametru. Rozlišujte „nefiltrovat" a „hledat prázdné". Stejně tak nikdy nepředávejte uživatelský vstup přímo do dotazu – whitelist povolených polí a operátorů je nutnost, ne přepych.

Nezapomínejte na chybové stavy. Kód, který předpokládá, že všechno projde, je křehký. Místo tichého `undefined` použijte raný návrat nebo vyhození chyby s jasnou zprávou. Kontrolujte vstupy na začátku funkce, ne uprostřed. Tím se hlavní logika odsadí a čte se jako příběh. Zároveň se vyhněte hlubokému vnořování podmínek; častěji pomůže obrácená podmínka a návrat.

V praxi se osvědčuje zapracovat review do definition of done a do odhadu každého úkolu. U menších změn stačí připočítat zlomek času, u větších klidně stejně tolik, kolik zabrala samotná implementace. Když se odhad a skutečnost rozcházejí, zapište si proč – příště se odhad zpřesní. Cílem není trefit se na minutu, ale mít plán, který vydrží i druhé kolo připomínek.

Odhady času jsou jedna věc, realita druhá. Když do plánu nezahrnete code review a následné zapracování připomínek, skončíte s harmonogramem, který nikdy nesedí. Přitom právě tahle část bývá největším zdrojem skluzu. Nejde o to přidat paušální procenta, ale odhadnout ji podle konkrétních podmínek.

Odhad odvoďte od velikosti změny, ne od kalendáře Užitečné je vycházet z objemu a charakteru změny. Malá oprava v jedné funkci znamená review v řádu desítek minut a zapracování podobně. Větší refaktoring nebo nová logika napříč moduly zabere review klidně půl dne a připomínky se mohou táhnout několik dní, zvlášť když se čeká na vyjádření více lidí. Pomáhá i historie: podívejte se, jak dlouho podobné změny trvaly minule, a použijte to jako referenci místo dojmů.

Nejčastější chyby: ukládání celých API odpovědí i s metadaty, která nikdo nečte; duplicitní zdroj pravdy mezi Reduxem a lokálním stavem; přepisování pole mutací místo vytvoření nového; a reducery, které se snaží řešit příliš mnoho najednou. Rozdělte je podle domén a každý testujte zvlášť. Pokud začne být jeden slice nepřehledný, rozdělte ho dřív, než do něj přidáte další akci.