Testování reducerů a async akcí v Reduxu bez integračního prostředí
Základním kritériem je, zda IDE umí pracovat s vaším konkrétním databázovým systémem. Nejběžnější databáze mají vlastní pluginy nebo vestavěnou podporu, ale pozor na to, že se kvalita liší. Například u PostgreSQL může být vestavěná podpora jen základní, zatímco plugin od komunity nabídne ladění výkonu, vizualizaci plánů nebo porovnání schémat. Typickou chybou je spoléhat na to, že „všechno funguje", a zjistit až v polovině projektu, že nemůžete spustit uloženou proceduru nebo že se vám nedaří připojit k databázi přes SSH tunel. Před finálním výběrem si proto nainstalujte zkušební verzi a vyzkoušejte připojení k vaší databázi z reálného projektu.
První krok spočívá v zavedení sémantického verzování pro každou knihovnu zvlášť. Formát tři čísla (hlavní, vedlejší, oprava) funguje dobře, ale musí být striktně dodržován. Hlavní číslo zvyšujte pouze při nekompatibilních změnách API, vedlejší při přidání funkce zpětně kompatibilním způsobem a opravné při opravě chyby. Důležité je, aby se tyto změny promítaly i do závislostí. Pokud knihovna A změní hlavní verzi, knihovna B, která ji používá, musí ve svém manifestu explicitně uvést nový rozsah povolených verzí. Bez toho vznikne chaotický stav, kdy různé části projektu používají nekompatibilní kombinace.
Časté chyby a jak je odstranit Nejčastější chybou je chybějící středník na konci příkazu. V C# je středník povinný. Pokud ho vynecháte, kompilátor zahlásí chybu. Další pastí je použití špatných uvozovek – v C# se pro řetězce používají pouze dvojité uvozovky, jednoduché patří pro znaky. Také si dejte pozor na to, že názvy proměnných jsou citlivé na velikost písmen – jmeno a Jmeno jsou dvě různé proměnné. Když váš kód obsahuje chybu, kompilátor vám sdělí řádek a typ chyby. Naučte se tyto hlášky číst – rychleji tak najdete problém.
Async akce testujete podobně, ale potřebujete mockovat závislosti, jako jsou API volání. V Redux Thunk se akce stává funkcí, která přijímá dispatch a getState. V testu zavoláte tuto funkci s mocknutým dispatch a getState a ověříte, že dispatch byla volána s očekávanými akcemi. Pro Redux Saga je postup složitější: potřebujete spustit generátor a kontrolovat, jaké efekty vrací. Můžete použít knihovnu redux-saga-test-plan, která zjednodušuje testování sekvencí efektů. Důležité je nastavit časové limity pro async operace, aby test nespadl na otevřeném spojení.
Když projekt využívá více knihoven, každá s vlastním životním cyklem, přestává stačit jednoduché číslo verze. Verzování kódu musí odrážet nejen změny v hlavním programu, ale i vzájemné závislosti mezi knihovnami. Základním pravidlem je oddělit metadata o verzích od samotného zdrojového kódu. Prakticky to znamená mít jeden centrální soubor (např. konfigurační manifest), který definuje, které verze knihoven jsou spolu kompatibilní. Do něj se zapisují změny při každém vydání, a to ručně, ale podle přesného postupu.
Váš kód by mohl vypadat takto: Console.Write("Zadejte své jméno: "); string jmeno = Console.ReadLine(); Dalším krokem je vypsání pozdravu s časem. Použijte interpolaci řetězců: Console.WriteLine($"Ahoj jmeno! Právě je DateTime.Now.ToShortTimeString()."); Tím se do řetězce vloží hodnota proměnné jmeno a aktuální čas. Nezapomeňte, že řetězcové interpolace vyžadují znak dolaru před uvozovkami. Toto je častý zdroj chyb pro začátečníky – když dolar zapomenete, zobrazí se text doslova.
Automatizace kontroly kompatibility místo ručního dohledu Ruční sledování verzí u více knihoven je neudržitelné, proto je nutné zapojit automatizované nástroje. Nejde o žádný konkrétní software, ale o princip: do CI (průběžné integrace) přidejte krok, který ověří, zda všechny deklarované závislosti existují a zda jejich verze odpovídají definovanému rozsahu. Tato kontrola by měla běžet při každém commitu a při každém vydání. Dále si vytvořte skript, který generuje zámek verzí (lockfile) pro celý projekt. Tento zámek zachytí přesné verze všech knihoven, které se aktuálně používají, a to včetně tranzitivních závislostí. Bez takového zámku se může stát, že vývojář na svém počítači pracuje s jinou kombinací než produkce, a to vede k nepředvídatelným chybám.
Zaměřte se na účel, ne na popularitu Častou chybou je vybírat jazyk podle žebříčků oblíbenosti nebo podle toho, co zrovna frčí. To je ale zavádějící. Jazyk, který je populární celosvětově, nemusí být vhodný pro vaši oblast. Například pro webové frontendy se používá JavaScript, pro backend zase Python, Java nebo C#. Pokud vás láká vývoj her, budete spíše potřebovat C++ s herním engine, ale pro začátek může být přívětivější Python s knihovnou pro tvorbu her. Místo slepého sledování trendů si zjistěte, jaké jazyky se běžně používají v projektech, které vás zajímají.