6 zásad, které vám ušetří hodiny ladění v ES6
Když tým přejde na jednotnou konfiguraci projektu, většinou začne nadšeně – sjednotí se formátování, lintery, testy i skripty. Ale po pár sprintách se objeví první trhliny: někdo potřebuje jinou verzi balíčku, jiný si oblíbil vlastní nastavení a do repozitáře začnou přitékat výjimky. Výsledek? In the event you loved this information and you would love to receive more information relating to tato stránka generously visit our own internet site. Konfigurace, která je sice v gitu, osvětlení V obýváku ale nikdo ji ve skutečnosti nepoužívá. Tohle je nejčastější důvod, proč týmová spolupráce na projektu končí u chaosu, i když všichni tvrdí, že mají „standard".
Nejprve si ujasněte, co vlastně řešíte. NoSQL databáze se dělí na dokumentové, klíč–hodnota, sloupcové a grafové. Dokumentové databáze se hodí pro obsah, který se mění a není striktně strukturovaný, jako jsou uživatelské profily nebo články. Klíč–hodnota je rychlá pro cache a ukládání session, ale neumí složitější dotazy. Sloupcové databáze jsou vhodné pro analýzu velkých objemů časových řad, a grafové zase pro sociální sítě nebo doporučovací systémy. Pokud váš problém nespadá do žádné z těchto kategorií, pravděpodobně NoSQL nepotřebujete.
Další praktická rada: nepodceňujte migraci dat. Přesun z relační databáze do NoSQL není jen technická operace, ale i změna datového modelu. Musíte navrhnout dokumenty tak, aby odpovídaly přístupovým vzorům vaší aplikace. Typická chyba je snažit se v NoSQL replikovat relační schéma s cizími klíči. Místo toho analyzujte, jak se data čtou a zapisují, a podle toho strukturu přizpůsobte. Například pokud často čtete uživatele spolu s jeho objednávkami, uložte je do jednoho dokumentu, i když to znamená duplikaci.
Druhým bodem jsou šablony literálů. Místo zalamování řetězců přes + můžete psát víceřádkové texty přímo, ale pozor na bílé znaky. Šablona zachovává všechny mezery a odřádkování tak, jak jsou zapsané, což někdy způsobí nečekané mezery ve výstupu. Řešením je buď opatrné psaní, nebo použití funkce, která řádky ořeže. Také je dobré vědět, že uvnitř ${} můžete provádět složitější výrazy, ale neměli byste tam volat funkce s vedlejšími efekty – šablona se vyhodnotí při každém použití, takže pokud funkce mění stav, dostanete nekonzistentní výsledky.
Prvním častým problémem je destrukce objektů a polí. Zápis const x, y = point je sám o sobě jasný, ale pozor na výchozí hodnoty. Pokud chcete nastavit fallback pro undefined, píšete const x = 10 = obj. To funguje pouze pro undefined, ne pro null nebo prázdný řetězec. Tuto skutečnost lidé často přehlédnou a pak v kódu řeší neočekávané chování. Stejně tak při destrukci pole pomocí const [a, b] = arr se vyplatí ověřit, zda pole vůbec existuje – destrukturování null nebo undefined vyhodí chybu, takže je lepší nejdřív zkontrolovat hodnotu.
Jak předejít tomu, aby se konfigurace stala jen mrtvým dokumentem Základní chybou bývá nastavit konfiguraci najednou, bez ohledu na to, jak tým reálně pracuje. Než začnete cokoli sjednocovat, zjistěte, kde jsou skutečné rozdíly: porovnejte lokální nastavení každého člena, podívejte se, jaké verze nástrojů používají, a zjistěte, které skripty spouštějí denně. Teprve poté vytvořte konfiguraci, která tyto reálné potřeby pokrývá – ne tu, kterou vám dodá šablona z internetu. Prakticky to znamená začít s malým pilotním projektem, kde konfiguraci otestujete naživo, a teprve poté ji rozšíříte na celý tým.
Nezapomínejte ani na dokumentaci. Konfigurace bez vysvětlení, proč je nastavená tak, jak je, je k ničemu. Ke každému pravidlu přidejte krátký komentář – co řeší, proč je důležité, a jak ho případně upravit. Tento krok je často opomíjený, přitom právě on rozhoduje o tom, jestli tým konfiguraci přijme, nebo ji bude ignorovat. Když někdo nový přijde do týmu, musí z dokumentace pochopit, proč se věci dělají tak, jak se dělají.
Spread operátor je také zdrojem nedorozumění. U polí [...arr] vytvoří kopii, ale pouze mělkou – objekty uvnitř pole jsou stále sdílené. Pokud tedy kopírujete pole objektů a změníte vlastnost objektu uvnitř kopie, projeví se to i v originálu. Pro hlubokou kopii musíte použít něco jako structuredClone, ale pamatujte, že tato funkce nefunguje s funkcemi a některými speciálními objekty. U objektů spread ...oldObj, newProp funguje dobře pro přidání vlastnosti, ale pozor na pořadí – poslední výskyt klíče vyhrává, takže ...obj, a: 1 a a: 1, ...obj dají různé výsledky, pokud obj obsahuje a.
Jak se vyhnout chronickému podceňování složitosti? Typickou chybou je odhadovat podle pocitu z podobných úkolů z minulosti. Paměť je ale zrádná, zapamatujeme si hlavně úspěšné projekty, nebo naopak katastrofy. Řešením je vést si jednoduchou evidenci: po dokončení každého úkolu si zapište, kolik času skutečně zabral, a porovnejte to s odhadem. Po pár týdnech získáte osobní křivku, která ukáže, o kolik obvykle podceňujete. S touto křivkou pak násobte všechny budoucí odhady příslušným koeficientem.