První kroky s API: co umět, než začneš volat cizí služby
Výběr správného vývojového prostředí (IDE) pro Python není jen otázkou osobního vkusu, ale především efektivity práce. Každý projekt má jiné nároky: jednoduchý skript pro automatizaci zvládnete i v textovém editoru, ale rozsáhlá aplikace s frameworkem, testy a verzováním si žádá nástroj s pokročilými funkcemi. Než se rozhodnete, zvažte, co budete skutečně psát, a nepodléhejte módním vlnám. Většina IDE nabízí bezplatné verze, ale placené funkce jsou často zbytečné pro začátečníky i pro středně pokročilé.
Prvním krokem je rozdělení projektu na logické celky. Většina moderních editorů umožňuje vytvořit tzv. pracovní prostory nebo složky, které mají vlastní nastavení. Neházejte vše do jednoho košíku – pro každý jazyk si definujte samostatný konfigurační soubor (např. pro Python, pro Node.js a pro CSS). Tím dosáhnete toho, že při otevření souboru s příponou .ts se automaticky aktivuje odpovídající linter, formátovač a sada klávesových zkratek. Vyhnete se tak situaci, kdy vám editor nabízí doplňování pro JavaScript i uprostřed Pythoního kódu.
Nezapomínejte ani na starší prohlížeče. I když jsou dnes Grid a Flexbox široce podporované, starší verze Internet Exploreru umí jen částečně Flexbox. Pro jistotu můžete použít fallback v podobě display: block; pro staré prohlížeče a moderní hodnoty nechat pro ty novější. Nezavádějte ale složité polyfilly – to jen zkomplikuje údržbu. Místo toho se zaměřte na progresivní vylepšení: obsah musí být čitelný i bez moderních layoutů.
Práce na projektu, který kombinuje více programovacích jazyků, je dnes běžná. Typická kombinace zahrnuje backend v Javě nebo Pythonu, frontend v TypeScriptu a šablony v HTML s CSS. Když si ale neupravíte vývojové prostředí, čeká vás peklo s přepínáním kontextů, špatným zvýrazňováním syntaxe a nefunkčním doplňováním kódu. Základem je pochopit, že IDE není univerzální nástroj, ale skládačka, kterou musíte vědomě poskládat pro každý jazyk zvlášť.
Další vrstvou ochrany je validace vstupů na straně serveru. Nikdy nespoléhejte na JavaScript, protože ten lze snadno obejít. Ověřujte délku, typ a rozsah hodnot – pokud očekáváte číslo, použijte funkci pro převod na integer a ošetřete chyby. U řetězců kontrolujte maximální délku a případně znakovou sadu. Tím sice nenahradíte parametrizaci, ale omezíte riziko, že se do dotazu dostane neočekávaný obsah. Dále omezte práva databázového účtu, který aplikace používá. Pokud aplikace potřebuje jen čtení, vytvořte účet s právem SELECT. Nikdy nepoužívejte administrátorský účet pro běžné operace.
Pro efektivní práci s více jazyky je klíčové také správné nastavení automatického formátování. Nechte editor formátovat při uložení, ale vždy s ohledem na aktuální jazyk. Typická chyba je použití univerzálního formátovače, který sice upraví odsazení, ale rozbije například řetězce v Pythonu nebo šablony v JSX. Vždy si ověřte, že máte pro každý jazyk nainstalovaný jeho nativní formátovač (např. Prettier pro TypeScript, Black pro Python, ale pozor – tyto názvy uvádím jako obecné pojmy, ne jako doporučení konkrétního produktu). Dále si nastavte, aby se automatické doplňování kódu řídilo podle typu souboru, ne podle obsahu – tím předejdete nechtěnému vkládání importů z jiného jazyka.
Při práci s Flexboxem si dejte pozor na hlavní osu. Výchozí hodnota flex-direction je row, což znamená, že prvky se řadí vedle sebe. Pokud chcete sloupec, musíte to explicitně nastavit. Častou chybou je zapomenout na flex-wrap, když potřebujete, aby se prvky zalomily na menších obrazovkách. Bez wrap se obsah přeteče a rozbije rozvržení. Vždy testujte chování na úzkých displejích, a to nejen v prohlížeči, ale i v responzivním náhledu.
Začněte u pojmenování. Vyhněte se zkratkám jako d, tmp nebo data. Místo toho používejte popisné názvy, které vyjadřují účel: userList, processedOrder, fetchUserProfile. Důležité je také rozlišovat funkce a proměnné: sloveso u funkcí (getUser, sendEmail) a podstatné jméno u hodnot (user, email). Vyhnete se tak nejednoznačnosti a ulehčíte práci ostatním vývojářům.
Dalším krokem je rozdělení kódu do malých funkcí. Pokud funkce dělá více než jednu věc, rozdělte ji. Například místo jednoho bloku, který validuje formulář, ukládá data a posílá notifikaci, vytvořte tři samostatné funkce. Výhodou je snadnější testování a opětovné použití. Pozor ale na přehnané členění – příliš mnoho jednorázových funkcí zbytečně komplikuje čtení. Ideální je najít rovnováhu.
Nakonec se zaměřte na ladění. Pokud projekt kombinuje více jazyků, je běžné, že potřebujete spustit debugger pro backend a zároveň sledovat konzoli frontendu. Většina IDE podporuje více konfigurací spuštění, které můžete spouštět paralelně. Nastavte si proto kombinované spouštěcí profily, které najednou spustí API server i vývojový server pro frontend. Nezapomeňte také na správné mapování zdrojových kódů (source maps), abyste mohli krokovat kód v TypeScriptu a přitom viděli, co se děje v JavaScriptu. Bez toho budete při hledání chyb ztrácet hodiny.