1 post / 0 new
Guest (not verified)
4 zpusoby, jak psát moderní JavaScript bez zbytečných chyb

Poslední oblastí jsou moduly. import a export nahrazují staré globální proměnné a okamžitě zpřehlední strukturu projektu. Při importu používejte relativní cesty a pojmenované exporty. Pokud exportujete výchozí hodnotu, importujte ji bez složených závorek. Častá chyba je cyklická závislost, kdy modul A importuje B a B importuje A. Tomu se vyhněte rozdělením kódu nebo přesunem společné logiky do třetího modulu. Moderní JavaScript není o tom naučit se všechny novinky nazpaměť, ale vědět, kdy kterou použít a kde naopak zvolit starší, ale bezpečnější postup.

Délka funkcí je druhý častý problém. Funkce přesahující obrazovku obvykle řeší víc úkolů najednou. Rozděl ji podle toho, co dělá: jedna načte data, druhá je upraví, třetí vykreslí výsledek. Nemusí to být dokonalé, ale každá část musí jít pochopit samostatně. Vyhni se hlubokému vnořování podmínek. Místo pěti úrovní if použij návraty před cyklem nebo pomocnou funkci.

Fixtures, parametry a práce s výjimka

Volba open source licence není formalita, kterou lze odbýt na konci projektu. Ovlivňuje, kdo může váš kód použít, jak ho může upravovat a zda musí své úpravy zveřejnit. Špatně zvolená licence může znamenat, že váš projekt nikdo nepoužije, nebo naopak že ho někdo uzavře a vy už nedostanete nic zpět. Proto je potřeba se rozhodnout dřív, než zveřejníte první řádek kódu.

Oprávnění řeš hned, jakmile je aplikace potřebuje. Nestačí je deklarovat v manifestu, musíš si je vyžádat za běhu. Pokud uživatel odmítne, aplikace nesmí spadnout ani se zacyklit. Ošetři i situaci, kdy uživatel oprávnění později odebere v nastavení. Totéž platí pro přístup k souborům nebo k poloze. Čím dřív si na tento režim zvykneš, tím méně práce tě čeká při ladění.

Typické chyby se opakují. Testovací data se zapisují natvrdo do kódu, takže testy padají při změně prostředí. Testy závisí na sobě navzájem a jejich pořadí rozhoduje o výsledku. Čekání se řeší pevnými prodlevami místo čekání na konkrétní stav, což vede k náhodným selháním. Automatizované testy se spouštějí jen na emulátoru a nikdy na skutečném zařízení. A často chybí testy pro obnovení stavu po přerušení – třeba když uživatel přijme hovor uprostřed nahrávání.

Nakonec si licenci napište přímo do souboru s kódem a jasně ji uveďte v dokumentaci. Bez explicitní licence platí, že kód je chráněn autorským právem a nikdo ho nesmí legálně používat, i když je veřejně dostupný. To je nejhorší varianta, protože projekt je fakticky mrtvý. Rozhodněte se vědomě, zkontrolujte kompatibilitu a pravidla dodržujte i u sebe.

Nejprve si ujasněte, co od licence očekáváte. Chcete, aby kód mohl použít kdokoli i v komerčním produktu bez povinnosti zveřejnit zdrojáky? Pak hledejte permisivní licenci, jako je MIT, BSD nebo Apache. Pokud naopak chcete, aby každý, kdo váš kód upraví a dál šíří, musel zachovat stejnou svobodu i pro své úpravy, potřebujete copyleftovou licenci, typicky GPL. Rozdíl mezi permisivní a copyleftovou licencí je to nejdůležitější rozhodnutí, které uděláte.

První zásadní věcí je deklarace proměnných. Místo var používejte let a const. let použijte tam, kde se hodnota bude měnit, const všude jinde. Blokový rozsah platnosti zabrání nechtěnému přepsání proměnné ve vnější funkci. Typická chyba je, že někdo dá const poli nebo objektu a diví se, že s ním nemůže manipulovat. const neznamená neměnnost obsahu, pouze neměnnou vazbu. Pokud potřebujete skutečně neměnný objekt, musíte sáhnout po jiných technikách, jako je zmrazení nebo kopírování.

Moderní JavaScript dnes znamená především standard ES6 a novější. Přechod od staršího stylu psaní není jen kosmetická záležitost. Kód je kratší, čitelnější a mnohdy i rychlejší. Zároveň ale přináší nové možnosti, ve kterých se dá snadno udělat chyba. Následující řádky shrnují konkrétní postupy, které se vyplatí používat, a upozorňují na místa, kde vývojáři často klopýtnou.

Na co si dát pozor v praxi Permisivní licence jsou krátké a snadno srozumitelné. MIT a BSD toho příliš nevyžadují – stačí zachovat autorská práva a text licence. Apache 2.0 přidává výslovné udělení patentových práv, což oceníte, pokud pracujete s technologiemi, kde hrozí patentové spory. Copyleftové licence jsou delší a mají více pravidel. GPL vyžaduje, aby každý, kdo šíří upravenou verzi, poskytl i zdrojový kód pod stejnou licencí. To je skvělé pro komunitu, ale problém pro firmu, která chce svůj produkt kombinovat s uzavřeným kódem.

Asynchronní operace se výrazně zjednodušily díky Promise a syntaxi async/await. Místo řetězení .then() můžete psát kód, který vypadá synchronně. Uvnitř async funkce použijte await před voláním, které vrací promise. Nezapomeňte na try/catch, jinak se chyba ztratí. Častý omyl je zapomenout await a pracovat s promise místo s výsledkem. Také pamatujte, že await lze použít jen uvnitř async funkce nebo v modulu na nejvyšší úrovni, pokud to prostředí podporuje.

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Navigation

User login