Čistý kód v JavaScriptu: praktický průvodce pro každodenní vývoj
Doporučuji udržovat každou větev krátkodobou a zaměřenou na jednu konkrétní funkci. Pokud potřebujete provést změny, které nesouvisí s aktuální funkcí, vytvořte si pro ně samostatnou větev. To platí i pro drobné opravy, které byste chtěli rychle nasadit. Izolace změn vám umožní je nezávisle testovat a vracet zpět, aniž byste ohrozili ostatní práce. Při pojmenování větví používejte jasný systém, který obsahuje identifikátor úkolu a krátký popis, ale vyhněte se obecným názvům jako „fix" nebo „test".
Jakmile je jednotková vrstva pevná, přejděte na integrační testy. Ty ověřují, že vaše komponenty spolupracují správně – typicky s databází, externími službami nebo frontendem. Zde platí pravidlo: testujte jen to, co jednotkově nejde pokrýt. Například mapování ORM, SQL dotazy nebo synchronizaci mezi moduly. U integračních testů si dejte pozor na stav prostředí. Vždy používejte izolovanou testovací databázi a po každém běhu ji vracejte do původního stavu. Jinak se vám testy navzájem ovlivňují a vy strávíte hodiny hledáním chyby, která je jen artefaktem pořadí testů.
Jak efektivně řešit konflikty při slučování více větví Konflikty při slučování jsou přirozenou součástí práce s více větvemi. Nejefektivnější způsob, jak je minimalizovat, je častá integrace. Pokud vaše větev žije déle než dva dny, pravidelně ji slučujte nebo rebasujte s hlavní větví. Při řešení konfliktů vždy čtěte obě verze kódu, ne jen tu svou. Často se stává, že změny z druhé větve jsou vhodnější, i když jste původně psali svou verzi. Vždy po vyřešení konfliktu spusťte testy, ne jen kompilaci.
Častým problémem je záměrné nebo nechtěné sdílení nedokončených změn mezi větvemi. Než přepnete na jinou větev, vždy si ověřte, že máte čistý pracovní strom. Pokud potřebujete uložit rozpracovanou práci, použijte stash nebo commit s popisem, že jde o rozpracovaný stav. Nikdy nepoužívejte force push do sdílených větví, protože to může smazat práci kolegů. Místo toho používejte force push pouze na osobní větve, a to ještě s vědomím, že to znesnadní spolupráci.
Na závěr: TypeScript se nejlépe učí při práci na reálném projektu. Začněte tím, že si do existujícího JavaScriptového projektu přidáte konfigurační soubor a postupně přepnete soubory na .ts. Sledujte chyby, které editor hlásí, a opravujte je. Po pár týdnech zjistíte, že píšete kód rychleji, protože se nemusíte spoléhat na paměť a dokumentaci. Chyby odhalíte dřív, než se dostanou k uživatelům, a to je největší přínos, který TypeScript nabízí.
Na závěr si osvojte práci s konzolí. Kromě běžného console.log, console.warn a console.error využijte také console.table pro zobrazení polí a objektů v přehledné tabulce, což je mnohem čitelnější než dlouhý výpis. Pomocí console.time a console.timeEnd změříte dobu provádění úseku kódu, což je užitečné při hledání výkonnostních problémů. Nezapomínejte ani na možnost kopírovat objekt z konzole do schránky pomocí příkazu copy(), který se hodí při testování nebo posílání dat kolegům. Tyto zdánlivé drobnosti výrazně urychlí vaše každodenní ladění a pomohou vám rychleji najít i ty nejzákeřnější chyby.
SQL injection není problém, který by se dal vyřešit jednou provždy. Vyžaduje průběžnou pozornost a kódování s ohledem na bezpečnost. Při každém novém dotazu se zeptejte, zda obsahuje uživatelský vstup, a pokud ano, použijte parametrizaci. Pravidelně aktualizujte databázové ovladače a frameworky, které často obsahují opravy známých zranitelností. Investice do prevence se mnohonásobně vrátí, protože náklady na řešení úniku dat jsou obvykle výrazně vyšší než čas strávený psaním bezpečného kódu.
Typová inference a praktické tipy TypeScript se snaží uhodnout typy automaticky, což znamená, že nemusíte psát anotace všude. Pokud ale deklarujete proměnnou bez inicializace, dostanete typ any, který vypne veškerou kontrolu. To je častý zdroj chyb. Místo any používejte unknown nebo konkrétní typ, případně zúžený typ pomocí typeof či instanceof. Další častou pastí je práce s poli – pokud máte pole, které může obsahovat různé typy, definujte to explicitně jako union, aby nedošlo k neočekávanému chování při volání metod.
Když pracujete na více feature větvích najednou, klíčem k úspěchu je oddělení kontextu. Než začnete s novou funkcí, ujistěte se, že vaše pracovní kopie je čistá. Pravidelně rebasujte svou větev proti hlavní vývojové linii, ale dělejte to jen v době, kdy jsou změny v hlavní větvi stabilní. Pokud rebasujete příliš často, můžete zbytečně řešit konflikty, které by se daly vyřešit až po dokončení funkce. Naopak příliš dlouhé čekání vede k obrovským konfliktům, které se obtížně řeší.