Jump to content

Nastavení IDE pro pohodlnou práci s více jazyky: Difference between revisions

From Dusty Ways: Rebirth
Created page with "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,..."
 
mNo edit summary
 
Line 1: Line 1:
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.<br><br>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".<br><br>U Gridu je typickým problémem použití pevných rozměrů, jako je šířka 300 pixelů. Místo toho využijte jednotky fr, procenta nebo funkci minmax(). Tím zajistíte, že se mřížka přizpůsobí velikosti obrazovky. Dalším častým omylem je ignorování vlastnosti grid-template-areas, která výrazně usnadňuje čitelnost kódu – pojmenujete si oblasti a pak je jen přiřadíte prvkům. Na malých obrazovkách pak stačí změnit definici mřížky na jeden sloupec a oblasti se automaticky přeskupí.<br><br>Pro rychlé přepínání mezi jazyky doporučuji nastavit si klávesové zkratky pro přepnutí typu souboru. Mnoho IDE umožňuje manuálně změnit režim jazyka pro daný soubor (např. přes příkaz „Change Language Mode"). To je užitečné zejména u souborů s nejednoznačnou příponou, jako je .config, .env nebo šablony. Vyhnete se tak situaci, kdy editor interpretuje obsah špatně a doplňuje kód nesprávným způsobem. Častou chybou je spoléhat se na automatickou detekci – u smíšených projektů není vždy spolehlivá.<br><br>Učte se postupně. Začněte s nadpisy od h1 po h6, odstavci, seznamy a odkazy. Poté přidejte obrázky a tabulky. U každého prvku si všímejte, jak se chová v prohlížeči. Nejdůležitější je pochopit, že každý element je vlastně obdélník – má šířku, výšku, okraje a vnitřní odsazení. CSS vlastnosti jako margin, padding a border vám dají plnou kontrolu nad tímto rozložením.<br><br>Pokud přicházíte z čistého JavaScriptu, první setkání s TypeScriptem může působit jako zbytečná byrokracie. Po pár dnech práce si ale začnete všímat, že mnoho chyb, které jste dříve odhalovali až za běhu, se nyní objeví přímo v editoru. TypeScript není samostatný jazyk, ale nadstavba, která do JavaScriptu přidává statické typování. Jeho hlavní přínos spočívá v tom, že umožňuje lépe popsat tvary dat a vztahy mezi nimi, což oceníte zejména u větších projektů nebo týmové spolupráce.<br><br>Typické chyby, které dělá každý začátečník Jednou z nejčastějších chyb je zapomenutí na správné uzavírání značek. V HTML platí přísné párové značky, pokud nějakou zapomenete, může se rozpadnout celá stránka. Dále se vyvarujte používání starých tabulkových layoutů – moderní CSS má flexbox a grid, které jsou mnohem flexibilnější a snadněji se s nimi pracuje. Také pozor na velikost písma – absolutní hodnoty jako 12px se nemusí dobře škálovat, lepší je používat relativní jednotky jako em, rem nebo procenta.<br><br>Při práci s funkcemi si osvojte volitelné parametry (znak ?) a výchozí hodnoty. Volitelné parametry umožňují zavolat funkci bez daného argumentu, ale uvnitř musíte kontrolovat, zda je hodnota definovaná. Výchozí hodnoty vám ušetří ruční přiřazování undefined. Dávejte si také pozor na typy, které se mění v průběhu času použijte generické typy, pokud chcete, aby funkce fungovala s libovolným typem při zachování typové bezpečnosti. Například funkce pro zpracování pole by měla být generická, abyste nepřišli o informaci o typu prvků.<br><br>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ší.<br><br>Č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.
Nejčastější chyby při odhadování času Jednou z nejrozšířenějších chyb je ignorování režie – schůzky, e-maily, code review, testování, nasazení nebo ladění. Zkušený vývojář často stráví jen polovinu pracovní doby samotným psaním kódu. Pokud tuto režii nezapočítáte, bude váš odhad systematicky nízký. Doporučuji přidat k čistému odhadu rezervu alespoň 20–30 %, a to nejen na režii, ale i na chyby, které se objeví až během integrace.<br><br>Dalším krokem je nastavení lintru a type checkerů. Pro každý jazyk zvlášť definujte pravidla, ideálně pomocí konfiguračních souborů přímo v projektu (např. .eslintrc, pyproject.toml, tsconfig.json). Tím zajistíte, že i kolegové se stejným IDE získají identické chování. Pozor na konflikty mezi lintery – pokud máte soubor, který obsahuje vložené šablony (např. HTML v JavaScriptu), vyplatí se vypnout pravidla, která si odporují. Tip: využijte možnost „ignore" pro konkrétní řádky nebo bloky, abyste předešli falešným hlášením.<br><br>Odhad času v agilním vývoji je vždy kompromisem mezi přesností a rychlostí. Než začnete plánovat, rozdělte si práci na dvě základní kategorie: analytické fáze (průzkum, návrh, specifikace) a implementaci (kódění, testování, nasazení). Každá z nich má jiné riziko a nejistotu, a proto je nelze odhadovat stejným metrem. Analytika obvykle zabere méně času, ale chyba v ní se promítne do celé implementace – pokud podceníte návrh, v kódu to doženete dvojnásobně.<br><br>Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.<br><br>Nakonec zhodnoťte provozní náklady. NoSQL databáze často vyžadují vlastní správu clusteru, sledování rozdělení dat a řešení problémů s replikací. Než se rozhodnete, spočítejte si čas na školení týmu a údržbu. Pro malý projekt s jedním serverem a pár tisíci záznamy je NoSQL zbytečná komplikace – SQL zvládne totéž s menší námahou. Použijte NoSQL tehdy, když máte jasný důvod: miliony záznamů, flexibilní schéma, horizontální škálování nebo specifický model dotazů, který SQL neumí efektivně.<br><br>Nezapomínejte ani na psychologické aspekty. Tým pod tlakem vedení má tendenci odhadovat nízké hodnoty, aby úkol „prošel". To je cesta k přepracování a nekvalitě. Vytvořte prostředí, kde je bezpečné přiznat, že něco může trvat déle. Místo otázky „Kolik to bude trvat?" se ptejte „Co všechno musíme udělat, abychom to dokončili?" Tím přesunete pozornost od odhadu k plánu.<br><br>Konzistence je další oblast, kde se NoSQL liší. Mnoho systémů nabízí takzvanou eventuální konzistenci – po zápisu nemusí být data okamžitě viditelná pro všechny čtenáře. To je v pořádku pro sociální sítě nebo logy, ale není vhodné pro bankovní transakce, kde potřebujete přísnou konzistenci. Pokud takovou transakci musíte udělat, budete ji modelovat přes více zápisů a kompenzační operace, což je složitější než v SQL. Ptejte se, co se stane, když vypadne uzel a zápis se nepodaří dokončit.<br><br>Jak konkrétně rozdělit odhad na fáze Pro každou user story si odděleně odhadněte analytickou část a implementaci. Analytika zahrnuje rozhovory se stakeholdery, tvorbu wireframů, datový model, definici akceptačních kritérií. Implementace pak kódění, unit testy, code review, integraci a nasazení. Častou chybou je, že týmy sčítají čas na analytiku a implementaci do jednoho čísla, ale zapomínají na přechodové fáze předání mezi analytikem a vývojářem, synchronizaci, opravy po review. Přidejte na tyto režijní činnosti rezervu 10–15 % k celkovému odhadu.<br><br>Praktický postup: naplánujte analytiku jako samostatný sprint před implementací, nebo jako první část sprintu. Pokud máte dvoutýdenní sprint, vyhraňte první dva až tři dny na analýzu a zbytek na kódění. Ale pozor – nikdy nenechávejte analytiku „plavat" bez časového limitu. Analytik by měl mít jasný deadline, jinak se fáze nekonečně protahuje. Deadliny ale nesmí být příliš těsné – typická chyba je, že analytik stihne návrh na poslední chvíli a vývojář nestihne zpětnou vazbu.<br><br>Častou chybou je psát zprávy v minulém čase, jako byste popisovali hotovou věc. Lepší je použít rozkazovací způsob nebo přítomný čas, protože to odpovídá tomu, co commit dělá, když je aplikován. Například „Přidej testy pro přihlášení" je jasné a akční. Vyhněte se také vágním slovům jako „úpravy", „oprava" nebo „refaktoring" – pokud neřeknou, co konkrétně je upraveno, opraveno nebo refaktorováno. Vždy doplňte, co je předmětem změny, ať už jde o soubor, funkci nebo chování.

Latest revision as of 14:26, 21 August 2026

Nejčastější chyby při odhadování času Jednou z nejrozšířenějších chyb je ignorování režie – schůzky, e-maily, code review, testování, nasazení nebo ladění. Zkušený vývojář často stráví jen polovinu pracovní doby samotným psaním kódu. Pokud tuto režii nezapočítáte, bude váš odhad systematicky nízký. Doporučuji přidat k čistému odhadu rezervu alespoň 20–30 %, a to nejen na režii, ale i na chyby, které se objeví až během integrace.

Dalším krokem je nastavení lintru a type checkerů. Pro každý jazyk zvlášť definujte pravidla, ideálně pomocí konfiguračních souborů přímo v projektu (např. .eslintrc, pyproject.toml, tsconfig.json). Tím zajistíte, že i kolegové se stejným IDE získají identické chování. Pozor na konflikty mezi lintery – pokud máte soubor, který obsahuje vložené šablony (např. HTML v JavaScriptu), vyplatí se vypnout pravidla, která si odporují. Tip: využijte možnost „ignore" pro konkrétní řádky nebo bloky, abyste předešli falešným hlášením.

Odhad času v agilním vývoji je vždy kompromisem mezi přesností a rychlostí. Než začnete plánovat, rozdělte si práci na dvě základní kategorie: analytické fáze (průzkum, návrh, specifikace) a implementaci (kódění, testování, nasazení). Každá z nich má jiné riziko a nejistotu, a proto je nelze odhadovat stejným metrem. Analytika obvykle zabere méně času, ale chyba v ní se promítne do celé implementace – pokud podceníte návrh, v kódu to doženete dvojnásobně.

Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.

Nakonec zhodnoťte provozní náklady. NoSQL databáze často vyžadují vlastní správu clusteru, sledování rozdělení dat a řešení problémů s replikací. Než se rozhodnete, spočítejte si čas na školení týmu a údržbu. Pro malý projekt s jedním serverem a pár tisíci záznamy je NoSQL zbytečná komplikace – SQL zvládne totéž s menší námahou. Použijte NoSQL tehdy, když máte jasný důvod: miliony záznamů, flexibilní schéma, horizontální škálování nebo specifický model dotazů, který SQL neumí efektivně.

Nezapomínejte ani na psychologické aspekty. Tým pod tlakem vedení má tendenci odhadovat nízké hodnoty, aby úkol „prošel". To je cesta k přepracování a nekvalitě. Vytvořte prostředí, kde je bezpečné přiznat, že něco může trvat déle. Místo otázky „Kolik to bude trvat?" se ptejte „Co všechno musíme udělat, abychom to dokončili?" Tím přesunete pozornost od odhadu k plánu.

Konzistence je další oblast, kde se NoSQL liší. Mnoho systémů nabízí takzvanou eventuální konzistenci – po zápisu nemusí být data okamžitě viditelná pro všechny čtenáře. To je v pořádku pro sociální sítě nebo logy, ale není vhodné pro bankovní transakce, kde potřebujete přísnou konzistenci. Pokud takovou transakci musíte udělat, budete ji modelovat přes více zápisů a kompenzační operace, což je složitější než v SQL. Ptejte se, co se stane, když vypadne uzel a zápis se nepodaří dokončit.

Jak konkrétně rozdělit odhad na fáze Pro každou user story si odděleně odhadněte analytickou část a implementaci. Analytika zahrnuje rozhovory se stakeholdery, tvorbu wireframů, datový model, definici akceptačních kritérií. Implementace pak kódění, unit testy, code review, integraci a nasazení. Častou chybou je, že týmy sčítají čas na analytiku a implementaci do jednoho čísla, ale zapomínají na přechodové fáze – předání mezi analytikem a vývojářem, synchronizaci, opravy po review. Přidejte na tyto režijní činnosti rezervu 10–15 % k celkovému odhadu.

Praktický postup: naplánujte analytiku jako samostatný sprint před implementací, nebo jako první část sprintu. Pokud máte dvoutýdenní sprint, vyhraňte první dva až tři dny na analýzu a zbytek na kódění. Ale pozor – nikdy nenechávejte analytiku „plavat" bez časového limitu. Analytik by měl mít jasný deadline, jinak se fáze nekonečně protahuje. Deadliny ale nesmí být příliš těsné – typická chyba je, že analytik stihne návrh na poslední chvíli a vývojář nestihne zpětnou vazbu.

Častou chybou je psát zprávy v minulém čase, jako byste popisovali hotovou věc. Lepší je použít rozkazovací způsob nebo přítomný čas, protože to odpovídá tomu, co commit dělá, když je aplikován. Například „Přidej testy pro přihlášení" je jasné a akční. Vyhněte se také vágním slovům jako „úpravy", „oprava" nebo „refaktoring" – pokud neřeknou, co konkrétně je upraveno, opraveno nebo refaktorováno. Vždy doplňte, co je předmětem změny, ať už jde o soubor, funkci nebo chování.