Asynchronní kód je dnes postaven na async/await, které je čitelnější než řetězení then(). Funkce označená jako async vždy vrací Promise, takže uvnitř můžete použít await pro čekání na výsledek. Důležité je obalit await do try/catch, protože chyby v asynchronní funkci se nepropagují automaticky. Mnoho začátečníků zapomíná na to, že await lze použít pouze uvnitř async funkce – mimo ni dostanete chybu.
Častou chybou je neověřování všech součástí tokenu na serveru. Kromě podpisu a expirace kontrolujte také issuer a audience, tedy pro koho byl token vydán a pro kterou službu je určen. Bez této kontroly může útočník použít token z jiné aplikace, pokud má stejné podpisové klíče. Dále si dejte pozor na algoritmus, kterým je token podepsán. Útočník může zkusit změnit hlavičku na „none” a obejít tak ověření. Vždy explicitně definujte seznam povolených algoritmů a v případě pochybnosti token zamítněte.
Začněte malými krůčky a postupně se propracujte k náročnějším úkolům. Nejdřív opravte překlep v dokumentaci, pak přidejte test, později drobnou funkci. Každý takový krok vám dá jistotu a zkušenosti. Až si osvojíte pravidla, můžete se hlásit o roli dlouhodobého správce nebo mentora. Zapojení do open source je obohacující – naučíte se novým technologiím, potkáte zajímavé lidi a získáte reálnou praxi, kterou ocení i budoucí zaměstnavatelé.
Pamatujte také na to, že open source je o spolupráci, ne o soutěži. Neberte si kritiku osobně – code review je standardní součástí procesu. Když vám někdo navrhne změny, snažte se je pochopit a zdvořile na ně reagovat. Pokud nesouhlasíte, vysvětlete proč, ale buďte připraveni diskutovat. Dobrým zvykem je poděkovat recenzentovi za čas.
Jednotkové testy jsou základním stavebním kamenem udržovatelného kódu. Framework NUnit patří mezi nejpoužívanější nástroje pro testování v ekosystému .NET. Pokud s ním začínáte, nejdůležitější je pochopit, že test nemá ověřovat, že kód funguje, ale že se chová podle očekávání v izolovaných scénářích. To znamená, že každý test by se měl zaměřit na jednu konkrétní logiku a neměl by záviset na vnějším stavu, jako je databáze, souborový systém nebo čas.
Prvním krokem je volba algoritmu pro podpis. Vždy používejte asymetrické podepisování, například algoritmus RS256. Tím zajistíte, že token podepíše pouze autorizační server a ostatní služby si pouze ověřují podpis pomocí veřejného klíče. Nikdy nepoužívejte symetrický algoritmus HS256, pokud nemáte jediný server a plnou kontrolu nad sdíleným tajemstvím. Pokud dojde k úniku tajemství, útočník může podepsat libovolný token. U asymetrického přístupu je riziko omezeno na kompromitaci soukromého klíče, který je uložen jen na jednom místě.
Ladění asynchronního kódu a práce s proměnnými Asynchronní JavaScript (callbacks, Promise, async/await) je častým zdrojem chyb, protože kód se nevykonává lineárně. V panelu Sources využijte tlačítko „Step into next function call” – umožní vám vstoupit i do asynchronních operací. Vždy si ověřte, zda máte v nástrojích zapnutou volbu „Pause on caught exceptions” (Pozastavit u zachycených výjimek). Tato funkce vás upozorní na chyby, které by jinak byly tiše polknuty blokem try…catch. Mnoho vývojářů tuto volbu přehlédne a poté marně hledá příčinu, proč se kód chová jinak, než očekávají.
Když se kód zastaví na breakpointu, můžete v konzoli přímo psát výrazy a zjišťovat tak aktuální hodnoty – stačí do konzole napsat název proměnné nebo zavolat funkci. Tímto způsobem můžete měnit obsah proměnných za běhu, což je užitečné pro testování okrajových případů. Například pokud funkce selhává na prázdném poli, vložte do konzole seznam = [] a pokračujte v krokování. Tento postup je rychlejší než opakované načítání stránky a zadávání nových vstupů.
Častou chybou je testovat implementaci místo chování. Pokud testujete, že soukromá metoda vrací určitou hodnotu, znamená to, že test je závislý na vnitřním uspořádání třídy. Při jakékoli refaktorizaci pak test selže, i když chování zůstává správné. Místo toho testujte veřejné rozhraní a používejte mockování pro závislosti, jako je databáze nebo HTTP klient. Pro mockování v NUnit běžně používáte knihovnu Moq, ale lze i psát vlastní falešné objekty. Vždy se ujistěte, že testy jsou rychlé a nevyžadují síťové připojení – pokud potřebujete testovat přístup k API, použijte rozhraní a simulujte odpovědi.
Retrospektiva je nejcennější část, ale v českém prostředí se často přeskakuje nebo se mění na stížnosti. Použijte jednoduchý rámec: co fungovalo, co nefungovalo, co zlepšíme v příštím sprintu. Vyberte si maximálně jednu nebo dvě akce, které skutečně uděláte. Pokud si na retrospektivě řeknete „musíme víc testovat”, ale nikdo to nezapíše a nepřiřadí vlastníka, nestane se nic. Zkuste rotovat role a mluvit i o procesu, ne jen o technice.
If you liked this article and you would certainly like to receive more details pertaining to discuss kindly see the web page.
