Začínáme s TypeScriptem: praktický průvodce pro JS vývojáře
페이지 정보
작성자 Mariano 작성일 26-08-22 03:02 조회 1 댓글 0본문
Psaní testů patří k základním dovednostem každého vývojáře. V Pythonu je nejrozšířenější knihovnou pytest, která kombinuje jednoduchost se silnými funkcemi. Pokud s ní začínáte, stačí vám znát pár pravidel. Testy se píší jako obyčejné funkce, které začínají slovem test_, a jejich návratová hodnota se kontroluje pomocí příkazu assert. Žádné třídy ani dědičnost nejsou nutné, pytest si sám najde soubory a funkce podle pojmenování.
Další pastí je nesprávné použití union typů. Například pokud má funkce přijímat číslo nebo řetězec, nemůžete s takovým parametrem jen tak provádět aritmetické operace. Musíte nejprve zúžit typ pomocí podmínky nebo funkce typeof. Jinak osvětlení v obývákuám kompilátor právem vyhodí chybu. Podobně dopadnete, pokud se pokusíte přistupovat k vlastnostem objektu, který může být null nebo undefined. Právě tady oceníte volitelné řetězení nebo operátor !, který říká, že hodnota určitě existuje – ale používejte ho střídmě, protože snadno zamaskujete skutečný problém.
Častou chybou bývá, že vývojáři spoléhají pouze na příkaz console.log a vypisují si desítky hlášek do konzole. To je sice rychlé, ale z dlouhodobého hlediska nepřehledné a často vám unikne kontext, ve kterém k chybě došlo. Místo toho si osvojte používání podmíněných breakpointů – kliknete pravým tlačítkem na číslo řádku, zvolíte Add conditional breakpoint a zadáte podmínku, která musí být splněna, aby se provádění zastavilo. Ušetříte tím spoustu času, pokud se chyba projevuje jen při určité hodnotě proměnné (například když je pole prázdné nebo když je uživatel přihlášený).
Pozor si dejte i na méně obvyklá místa, kde se SQL injection může schovat. Často se zapomíná na HTTP hlavičky, cookies nebo soubory nahrané uživatelem. Tyto hodnoty také procházejí aplikací a mohou skončit v databázi. Vždy je ošetřete stejně jako formulářová pole. Dále myslete na chybové hlášky – nikdy nevracejte uživateli detailní výpis SQL chyby. Útočník by z něj získal informace o struktuře databáze. Místo toho logujte chyby do souboru a uživateli zobrazte neutrální hlášení.
Základním krokem je instalace a konfigurace. Po vytvoření projektu stačí spustit příkaz pro inicializaci, který vytvoří soubor tsconfig.json. V něm si nastavíte mimo jiné cílovou verzi ECMAScriptu, přísnost kontroly nebo to, kam se mají ukládat zkompilované soubory. Důležité je nezapomenout na možnost strict, která zapne nejpřísnější režim typové kontroly. Ze začátku to může být nepříjemné, ale právě to vás donutí psát čistší kód a předejdete mnoha problémům.
Základním pravidlem je nikdy neskládat SQL dotaz pomocí řetězcové konkatenace. Typická chyba vypadá jako spojení textu s proměnnou, například když barvy stěn do obýváku dotazu vložíte uživatelské jméno přímo jako součást příkazu. Pokud uživatel zadá místo jména třeba výraz s apostrofem a podmínkou, může změnit logiku dotazu. Vždy proto používejte připravené dotazy (prepared statements) a parametrizované dotazy. Tyto mechanismy oddělují SQL kód od dat a databáze je pak bere jako hodnoty, nikoli jako příkazy.
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.
Na závěr si zkuste osvojit práci s generickými typy. Umožňují vám psát funkce a komponenty, které pracují s různými datovými typy, aniž byste ztratili typovou bezpečnost. Typický příklad je funkce, která vrací první prvek pole – díky generice si zachováte přesný typ prvku, místo abyste vraceli any. Tím se váš kód stane flexibilnější a zároveň bezpečnější. Nebojte se experimentovat a postupně typy rozšiřovat – čas, který investujete do učení, se vám vrátí na menším počtu chyb a rychlejším ladění.
Ladě kódu a práce se zásobníkem Asynchronní JavaScript – ať už jde o setTimeout, fetch nebo události – často působí problémy, protože se pořadí spouštění liší od toho, co vidíte v kódu. V takovém případě se vyplatí zapnout možnost zarazit se na neošetřené chybě (pause on exceptions) a také sledovat zásobník volání v panelu Call Stack. Ten vám ukáže, která funkce volala kterou a v jakém pořadí se provádění dostalo do aktuálního místa. Pomocí něj snadno odhalíte, že chyba nevzniká tam, kde si myslíte, ale o úroveň výš – třeba v callbacku, který jste předali jiné funkci.
Další pastí je nesprávné použití union typů. Například pokud má funkce přijímat číslo nebo řetězec, nemůžete s takovým parametrem jen tak provádět aritmetické operace. Musíte nejprve zúžit typ pomocí podmínky nebo funkce typeof. Jinak osvětlení v obývákuám kompilátor právem vyhodí chybu. Podobně dopadnete, pokud se pokusíte přistupovat k vlastnostem objektu, který může být null nebo undefined. Právě tady oceníte volitelné řetězení nebo operátor !, který říká, že hodnota určitě existuje – ale používejte ho střídmě, protože snadno zamaskujete skutečný problém.
Častou chybou bývá, že vývojáři spoléhají pouze na příkaz console.log a vypisují si desítky hlášek do konzole. To je sice rychlé, ale z dlouhodobého hlediska nepřehledné a často vám unikne kontext, ve kterém k chybě došlo. Místo toho si osvojte používání podmíněných breakpointů – kliknete pravým tlačítkem na číslo řádku, zvolíte Add conditional breakpoint a zadáte podmínku, která musí být splněna, aby se provádění zastavilo. Ušetříte tím spoustu času, pokud se chyba projevuje jen při určité hodnotě proměnné (například když je pole prázdné nebo když je uživatel přihlášený).
Pozor si dejte i na méně obvyklá místa, kde se SQL injection může schovat. Často se zapomíná na HTTP hlavičky, cookies nebo soubory nahrané uživatelem. Tyto hodnoty také procházejí aplikací a mohou skončit v databázi. Vždy je ošetřete stejně jako formulářová pole. Dále myslete na chybové hlášky – nikdy nevracejte uživateli detailní výpis SQL chyby. Útočník by z něj získal informace o struktuře databáze. Místo toho logujte chyby do souboru a uživateli zobrazte neutrální hlášení.
Základním krokem je instalace a konfigurace. Po vytvoření projektu stačí spustit příkaz pro inicializaci, který vytvoří soubor tsconfig.json. V něm si nastavíte mimo jiné cílovou verzi ECMAScriptu, přísnost kontroly nebo to, kam se mají ukládat zkompilované soubory. Důležité je nezapomenout na možnost strict, která zapne nejpřísnější režim typové kontroly. Ze začátku to může být nepříjemné, ale právě to vás donutí psát čistší kód a předejdete mnoha problémům.
Základním pravidlem je nikdy neskládat SQL dotaz pomocí řetězcové konkatenace. Typická chyba vypadá jako spojení textu s proměnnou, například když barvy stěn do obýváku dotazu vložíte uživatelské jméno přímo jako součást příkazu. Pokud uživatel zadá místo jména třeba výraz s apostrofem a podmínkou, může změnit logiku dotazu. Vždy proto používejte připravené dotazy (prepared statements) a parametrizované dotazy. Tyto mechanismy oddělují SQL kód od dat a databáze je pak bere jako hodnoty, nikoli jako příkazy.
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.Na závěr si zkuste osvojit práci s generickými typy. Umožňují vám psát funkce a komponenty, které pracují s různými datovými typy, aniž byste ztratili typovou bezpečnost. Typický příklad je funkce, která vrací první prvek pole – díky generice si zachováte přesný typ prvku, místo abyste vraceli any. Tím se váš kód stane flexibilnější a zároveň bezpečnější. Nebojte se experimentovat a postupně typy rozšiřovat – čas, který investujete do učení, se vám vrátí na menším počtu chyb a rychlejším ladění.
Ladě kódu a práce se zásobníkem Asynchronní JavaScript – ať už jde o setTimeout, fetch nebo události – často působí problémy, protože se pořadí spouštění liší od toho, co vidíte v kódu. V takovém případě se vyplatí zapnout možnost zarazit se na neošetřené chybě (pause on exceptions) a také sledovat zásobník volání v panelu Call Stack. Ten vám ukáže, která funkce volala kterou a v jakém pořadí se provádění dostalo do aktuálního místa. Pomocí něj snadno odhalíte, že chyba nevzniká tam, kde si myslíte, ale o úroveň výš – třeba v callbacku, který jste předali jiné funkci.
댓글목록 0
등록된 댓글이 없습니다.
