Jak uspořádat verzování kódu při více knihovnách

Z Mazovia

Poslední rada: nevěřte tomu, že nejlepší IDE je to, které používá váš kolega. Každý má jiné zvyky a jiné požadavky. Dejte si čas a pravidelně přehodnocujte, zda vám nástroj stále vyhovuje. Až budete zkušenější, můžete přejít na minimalistický editor s rozšířeními, který je rychlejší a přehlednější. Důležité je, aby vám prostředí pomáhalo, ne aby vám překáželo. Teprve pak budete psát kód efektivně a s radostí.

Nakonec pamatujte, že čistý kód není cíl, ale proces. Pravidelně provádějte code review, používejte lintery a formátovací nástroje, ale hlavně přemýšlejte nad každým řádkem – jestli by mu porozuměl někdo, kdo projekt nezná. Tento přístup se vám vrátí nejen v údržbě, ale i ve vlastním pohodlí při dalším vývoji.

Časté chyby, které kazí čistotu Mezi typické chyby patří používání magických čísel – hodnot bez vysvětlení, například if (status === 3). Místo toho definujte konstantu STATUS_APPROVED = 3 a používejte ji. Podobně se vyvarujte dlouhým řetězením podmínek if…else; pokud jich je víc než dvě, zvažte použití objektu nebo mapy pro mapování stavů. Také se vyhněte mutování vstupních parametrů – místo toho vracejte nové hodnoty, což usnadňuje ladění.

Parametrizace je další užitečná vlastnost. Pomocí dekorátoru @pytest.mark.parametrize můžete spustit stejný test s různými vstupy a očekávanými výstupy. Například funkci pro výpočet faktoriálu otestujete pro hodnoty 0, 1, 5 a 10 najednou. Tím se snižuje duplicita kódu a zvyšuje pokrytí. Při selhání parametrizovaného testu pytest jasně označí, která kombinace vstupů selhala, takže nemusíte hádat.

Dalším častým problémem je odhadování „ve vzduchu" bez znalosti existujícího kódu. Pokud neznáte architekturu, použité knihovny nebo kvalitu testů, je váš odhad jen tipování. Před odhadem si projděte relevantní části kódu, podívejte se na podobné úkoly z minulosti a zjistěte, jak dlouho reálně trvaly. Historická data z vašeho týmu jsou nejcennějším zdrojem – pokud je nemáte, začněte si je zaznamenávat.

Další praktický krok je nastavení sprintů. Začněte s dvoutýdenními iteracemi, které jsou pro začátek ideální. Na začátku sprintu si naplánujete, co se stihne, a na konci předvedete hotovou funkci. Důležité je, aby sprint končil něčím, co jde spustit. I když je to jen malá část systému, musí být funkční. Pokud se vám stane, že nestíháte, nebojte se škrtat úkoly, ne prodlužovat sprint. Zkrácení rozsahu je častější a zdravější než posouvání termínu.

Samostatná kapitola je technický dluh. Scrum vám dá sice do rukou nástroj, jak řídit požadavky, ale nezachrání vás před špatnou architekturou. V českém prostředí se často stává, že tým jede v rychlých sprintech, ale kód je neudržovatelný. Řešení spočívá v tom, že si každý sprint vyhradíte čas na refaktoring a testování. Třeba každý čtvrtý den sprintu věnujte čištění kódu. Není to luxus, ale nutnost, pokud chcete dlouhodobě dodávat rychlost.

Další oblastí je práce s asynchronním kódem. Místo hlubokého zanořování Promise.then() používejte async/await, který činí tok kódu lineárnějším. Dbejte na správné zpracování chyb – try/catch by mělo obalovat pouze rizikovou část, ne celou logiku. A nikdy nezapomeňte na ošetření okrajových případů, jako jsou prázdné pole nebo neplatné vstupy, protože právě tam se často skrývají chyby.

Jak efektivně používat fixtures a parametrizaci Fixtures jsou funkcí pytestu, která umožňuje připravit data nebo prostředí pro testy. Místo abyste v každém testu opakovali inicializaci objektů, definujete jednou fixture a tu pak předáte jako parametr funkce. Například pro testování databázových operací vytvoříte fixture, která připraví připojení a po skončení testu ho zavře. To zajišťuje čistotu a izolaci testů. Důležité je nepoužívat globální stav, protože testy by se pak mohly ovlivňovat navzájem.

Prvním krokem je rozdělení rolí. Produktový vlastník (product owner) má na starosti prioritizaci backlogu a komunikaci se zákazníkem. Scrum master není manažer, ale kouč, který odstraňuje překážky. Tým se skládá z vývojářů, testerů a případně i analytiků. Typická chyba českých firem je, že scrum mastera jmenují z řad programátorů, kteří pak dělají obojí. Tím trpí obě role. Pokud máte malý tým, zkuste outsourcovat roli scrum mastera někomu zkušenému, nebo si najděte interního člověka, který nebude psát kód.

Doporučuji zavést si pravidlo pro číslování verzí, které bude jasné všem členům týmu. Například hlavní číslo pro nekompatibilní změny, vedlejší pro přidání funkce a číslo opravy pro opravy chyb. Toto pravidlo by mělo platit pro všechny knihovny jednotně. Pokud máte více knihoven, které na sobě závisí, sledujte i jejich vzájemnou kompatibilitu. Vytvořte si jednoduchý seznam, který ukazuje, které verze knihoven spolu fungují. Tento seznam pak aktualizujte při každém novém vydání.