Jump to content

Výběr open source licence, který později nebudete proklínat

From Dusty Ways: Rebirth


Na závěr si osvojte jedno pravidlo: odhad není závazek, ale výchozí bod pro plánování. Pokud zjistíte, že realita se od něj výrazně liší, buďte první, kdo to ohlásí, a navrhněte novou dohodu. Průběžné přehodnocování odhadů na základě skutečně odvedené práce je mnohem užitečnější než snažit se za každou cenu dodržet číslo, If you have any issues about the place and how to use Rekonstrukce bytu, you can get hold of us at our website. které vzniklo na začátku projektu. Tímto způsobem se časové plánování stane nástrojem pro lepší spolupráci, ne zdrojem stresu.

Nezapomínejte ani na tzv. skryté náklady. Softwarový projekt není jen psaní kódu, ale i ladění, testování, psaní dokumentace, komunikace a řešení problémů s prostředím. Studený start na novém počítači, licence, integrace s cizími systémy – to vše dokáže zabrat dny, které nikdo neplánoval. Dobrý odhad proto vždy obsahuje položku „rezerva na neznámé", která je úměrná složitosti úkolu. Čím méně jasné je zadání, tím větší rezervu si nechte.

Typická past: test asynchronní akce skončí dřív, než se vyřeší Promise. Vždy používejte async/await a před ukončením testu počkejte na osvětlení v obývákušechny microtasky. Pokud testujete chybový stav, mockujte API tak, aby vracelo zamítnutý Promise, a ověřte, že akce typu failure obsahuje správnou chybovou zprávu. Nezapomeňte na to, že getState musí také vracet konzistentní data – pokud thunk čte z něj nějakou hodnotu, mějte ji připravenou v mocku.

Co si pohlídat, než licenci definitivně připnete Než licenci vyberete, ověřte si, že jste autory veškerého kódu, který do projektu vkládáte. Pokud jste použili cizí ukázky, musíte mít jasno v tom, jakou mají licenci a zda je s vaší volbou kompatibilní. Dalším krokem je přidání hlavičky do každého zdrojového souboru. Samotný soubor LICENSE v kořenovém adresáři nestačí, protože při kopírování jednotlivých souborů se informace o licenci snadno ztratí. Uveďte rok vzniku a jméno autora, ale pozor: pokud projekt vyvíjíte byt v paneláku rámci zaměstnání, může být autorem vaše firma. To si ověřte ve smlouvě.

Zásadní je také pravidlo DRY (Don't Repeat Yourself). Pokud vidíte, že kopírujete stejný blok kódu potřetí, je čas ho extrahovat do funkce. Ale pozor – přehnaná abstrakce je stejně škodlivá jako duplicita. Vytvářet generické funkce pro dva případy použití je kontraproduktivní. Měřte to zdravým rozumem a skutečnou potřebou.
Stejně důležité je vyhnout se vedlejším efektům. Funkce, která mění vnější proměnnou, je skrytá past. Když čtete kód, měli byste vidět, co funkce dělá, aniž byste museli sledovat celý program. Čistá funkce vždy vrací stejný výsledek pro stejné vstupy a nemění nic okolo. Tento princip vám ušetří mnoho hodin ladění, zejména když aplikace roste.

Když codebase roste, nevyhnete se ani nutnosti testovat legacy kód. Zde platí pravidlo: nejprve zabezpečete nejrizikovější místa pomocí charakterizačních testů, které zachovají stávající chování, a teprve poté začnete psát nové jednotkové testy. Nezkoušejte pokrýt všechno najednou – vyberte si moduly, které se mění nejčastěji, a tam postupně zvyšujte hustotu testů. Nezapomínejte, že testy také potřebují údržbu. Pokud test selže jen kvůli špatné konfiguraci, opravte to hned, jinak vás tým přestane testy brát vážně.

Častou chybou je vybrat si licenci podle toho, co zrovna použili jiní, bez ohledu na vlastní situaci. Třeba když vytváříte knihovnu, kterou chcete, aby používali i vývojáři v komerčních aplikacích, GPL je může odradit. Naopak u koncové aplikace, kde chcete zabránit tomu, aby ji někdo zavřel do proprietárního řešení, je GPL vhodná. Podívejte se také na to, jaké licence používají knihovny, na kterých váš projekt stojí. Pokud použijete komponentu pod GPL, váš projekt musí být taky GPL, jinak porušujete autorská práva.

Důležité je také myslet na caching. U RESTu máte HTTP cache, kterou můžete nastavit na úrovni endpointů – to je rychlé a jednoduché. U GraphQL je caching složitější, protože každý dotaz je unikátní a máte jediný endpoint. Pokud si nechcete komplikovat život, využijte knihovny jako Apollo Client nebo Relay, ale i tak musíte pochopit, jak fungují normalizace a invalidace cache. Bez toho skončíte s tím, že každý dotaz jde na server naplno, a to vás připraví o výkon.

Jak testovat async akce bez renderování komponenty U asynchronních akcí, typicky s thunk middleware, je klíčové mockovat API volání. Nikdy v testu nespouštějte skutečný fetch nebo axios. Místo toho si připravte mock funkci, která vrací předem definovanou odpověď. V testu pak zavoláte thunk s parametry a předáte mu tři funkce: dispatch, getState a extra argument (pokud ho používáte). Po dokončení akce ověříte, že dispatch byl zavolán s očekávanými akcemi ve správném pořadí.