Čistý kód v JavaScriptu: co dělá rozdíl mezi chaosem a řádem

Z Mazovia

Postman je jedním z nejrozšířenějších nástrojů pro testování API, ale jeho skutečná síla se projeví až ve chvíli, kdy pochopíte jeho základní koncepty. Než začnete psát první testy, osvojte si práci s prostředím (environment) a kolekcemi (collections). Kolekce slouží jako organizovaný seznam požadavků, které můžete sdílet s týmem, zatímco prostředí umožňuje definovat proměnné – typicky adresu serveru, přihlašovací tokeny nebo identifikátory. Pokud tyto dvě funkce ignorujete, budete neustále ručně přepisovat URL adresy a klíče, což vede k chybám a ztrátě času.

JWT je ale jen podepsaný řetězec. Jeho bezpečnost stojí na tom, jak ho vytvoříte a jak s ním zacházíte. Nejdůležitější je podpis. Vždy používejte asymetrický algoritmus, jako je RS256, a soukromý klíč držte výhradně na serveru. Veřejný klíč pak můžete distribuovat klientům, kteří jen ověřují podpis. Vyhněte se symetrickému HS256, pokud nemáte jen jednu službu, protože ten vyžaduje sdílení tajemství, které se snadno dostane tam, kam nemá. A nikdy, ale opravdu nikdy nepodepisujte token algoritmem, který si klient může zvolit sám – to je cesta k obejití celé ochrany.

Když píšete JavaScript, snadno podlehnete dojmu, že rychlé řešení je to nejlepší. Ale za tři týdny se k vlastnímu kódu vrátíte a zjistíte, že nerozumíte ani vlastním proměnným. Čistý kód není o estetice, ale o tom, abyste dokázali rychle najít chybu a bezpečně přidat novou funkci. Základní pravidlo zní: pište kód pro lidi, ne pro stroj. Stroj přečte cokoli, ale člověk potřebuje jasné pojmenování, krátké funkce a minimální překvapení.

Další pastí je doba platnosti. Krátká expirace je základ, ale samotná nestačí. Pokud token vyprší za pět minut, uživatel musí být neustále připojený, což je nepraktické. Řešením je pár tokenů: krátkodobý access token pro přístup k datům a dlouhodobý refresh token, který slouží jen k získání nového access tokenu. Refresh token držte na serveru v bezpečném úložišti a pravidelně ho obnovujte. Tím omezíte škody, když se nějaký token ztratí, a zároveň udržíte uživatele přihlášeného bez nutnosti zadávat heslo po každé akci.

Proč je pojmenování polovina úspěchu Největší problém většiny JavaScriptových projektů jsou proměnné jako data, x nebo temp. Takový název nic neříká a nutí vás procházet celou funkci, abyste zjistili, co obsahuje. Pojmenovávejte proměnné podle toho, co představují, ne podle toho, jak vznikly. Například místo let a = getUsers() použijte let users = getUsers() a místo let flag = true zvolte let isAdmin = true. Boolean hodnoty začněte předponou is, has nebo can – hned je jasné, že jde o pravdivostní výraz.

Zaměřte se na základy automatizace, ale nepropadejte panice z programování. Naučte se číst jednoduchý kód a pochopte, jak funguje HTML struktura. Můžete si vyzkoušet nástroje pro záznam a přehrávání akcí v prohlížeči, které nevyžadují psaní kódu od nuly. Stačí, když budete schopni popsat, co by se dalo automatizovat a jaké jsou limity. U pohovoru ocení, když dokážete navrhnout, který test má smysl automatizovat a který je lepší nechat na ručním testerovi.

Začněte instalací pytestu přes správce balíčků. Poté vytvořte soubor s názvem test_*.py nebo *_test.py, aby pytest testy automaticky našel. Jednotlivé testy jsou obyčejné funkce začínající slovem test_. Příklad:

Velkou chybou bývá čekání na první pracovní příležitost. Mnohem lepší je aktivně vyhledat open-source projekty, které hledají dobrovolníky na testování. Nevadí, že neznáte všechny nástroje. Začněte s jednoduchým zapisováním chyb do issue trackeru. Naučíte se tím komunikovat s vývojáři a popisovat problém tak, aby byl srozumitelný a reprodukovatelný. Toto je klíčová dovednost, kterou nezískáte z žádné učebnice.

Když zabezpečujete API, máte v zásadě dvě cesty: klasické session uložené na serveru, nebo stateless tokeny typu JWT. Hlavní rozdíl je v tom, kdo si pamatuje, že je uživatel přihlášený. U session držíte stav na serveru, u JWT ho nesete v každém požadavku. Volba mezi nimi není o modernosti, ale o tom, co vaše aplikace skutečně potřebuje. Pokud stavíte mikroservisy nebo potřebujete sdílet přihlášení mezi více nezávislými službami, JWT vám ušetří spoustu starostí.

Na závěr si osvojte práci s malými funkcemi a čistými datovými strukturami. Místo dlouhého řetězce if-else pro různé typy zpráv použijte objekt, který mapuje klíče na funkce nebo hodnoty. Tím se kód stane deklarativnějším a snadno rozšiřitelným. Až budete příště psát funkci, zeptejte se sami sebe: rozuměl bych tomu za měsíc, kdybych to viděl poprvé? Pokud ne, přepište ji hned – ušetříte si pozdější hodiny ladění.