Nakonec si pamatujte, že odhad není prodejní argument. Pokud zákazník tlačí na rychlost, protože chce nízkou cenu, nikdy nekývněte na nereálný termín jen kvůli zakázce. Radši mu vysvětlete, co všechno se musí udělat, a nabídněte kompromis – třeba zkrácení rozsahu práce. Když ukážete, že odhad stavíte na faktech, zákazník si vás váží víc, než když bezhlavě slíbíte. Až příště budete chtít říct „to bude rychlé”, vzpomeňte si, že rychlost se měří výsledkem, ne slovy.
Dalším užitečným nástrojem jsou šablonové literály. Umožňují vkládat proměnné přímo do řetězce pomocí zpětných uvozovek a ${}. Například: `Ahoj, $user.name!`. Tím odpadá nepřehledné spojování řetězců pomocí plus. Šablonové literály také podporují víceřádkové texty, což se hodí při generování HTML nebo SQL dotazů. Pozor však na escapování zpětných uvozovek a znaku dolaru – pokud je potřebujete do textu, musíte je ošetřit. Výhodou je i možnost vkládat do šablon funkce nebo ternární operátory, ale nezacházejte do extrémů – příliš složité výrazy uvnitř šablon zhoršují čitelnost.
Když se řekne agilní vývoj, většina českých týmů si představí Scrum. Není to ale žádná kouzelná hůlka – je to sada pravidel, která funguje jen tehdy, když jim všichni rozumí a dodržují je. Než začnete se sprinty a retrospektivami, ujasněte si jeden zásadní bod: proč vlastně chcete Scrum zavést? Pokud jen proto, že to „dělají všichni”, narazíte. Scrum dává smysl u produktů s častými změnami priorit, kde zákazník neví přesně, co chce, a vy potřebujete rychlou zpětnou vazbu.
Klíčové funkce pro každodenní vývoj Šipkové funkce (arrow functions) změnily způsob psaní funkcí. Kratší zápis a lexikální vazba this jsou hlavními důvody, proč je používat. Mějte ale na paměti, že šipkové funkce nemají vlastní arguments ani this, takže se nehodí jako metody objektů, pokud potřebujete přistupovat k aktuálnímu kontextu. Typickou chybou je použít šipkovou funkci v konstruktoru – to skončí chybou, protože nemají vlastní vazbu na prototype. Pro běžné callbacky nebo funkce vyššího řádu jsou však ideální.
Permisivní licence umožňují komukoli použít kód i v proprietárním softwaru, často bez nutnosti zveřejňovat změny. To je ideální pro knihovny, nástroje nebo projekty, kde chcete maximální adopci. Naproti tomu copyleftové licence (GPL, AGPL) vyžadují, aby odvozené dílo bylo distribuováno pod stejnou licencí. To oceníte, pokud chcete zabránit tomu, aby někdo váš kód „zavřel” a nevrátil komunité žádné úpravy.
Výběr open source licence je jedním z nejdůležitějších rozhodnutí při publikování softwaru. Ovlivňuje, jak mohou ostatní váš kód používat, upravovat a distribuovat. Častou chybou je převzít licenci z jiného projektu bez přemýšlení, nebo ji dokonce vynechat. Bez licence totiž není software open source – ostatní ho legálně nesmí použít.
Typická chyba je přidávat si k odhadu „tajnou rezervu” a pak zákazníkovi oznámit termín o dva dny delší, než reálně potřebujete. Takový přístup sice chrání vás, ale ničí důvěru. Zákazník vás přestane brát vážně, jakmile zjistí, že pokaždé slíbíte déle a pak to stejně nestíháte. Mnohem lepší je říct kratší termín, ale s jasnou podmínkou: „Když mi pošlete podklady do zítřka, stihnu to do konce týdne. Pokud ne, posouvá se to o dva dny.” Tím přesouváte odpovědnost na zákazníka a vyhnete se slibům, které nemůžete ovlivnit.
Na závěr si shrňme, na co si dát pozor. ES6+ funkce nejsou samospásné – je nutné je používat s rozmyslem a vědět, proč je používáte. Důkladně testujte zejména okrajové případy, jako jsou prázdné kolekce nebo null hodnoty. Dobře nastavené vývojové prostředí s linterem vám pomůže odhalit časté chyby, ale nic nenahradí porozumění tomu, jak daná funkce funguje. S těmito znalostmi budete psát moderní JavaScript, který je nejen stručnější, ale také spolehlivější a snáze udržovatelný.
Jak správně typovat funkce a objekty Největší sílu TypeScriptu využijete při definování funkcí a objektů. U funkcí vždy explicitně typujte parametry a návratovou hodnotu. Například místo function add(a, b) napište function add(a: number, b: number): number. Tím zajistíte, že funkci nelze zavolat s řetězcem, i kdyby se to na první pohled zdálo v pořádku. U objektů použijte rozhraní (interface) nebo typové aliasy (type). Rozhraní je vhodnější pro definici tvaru objektu, který se bude rozšiřovat, zatímco typové aliasy se hodí pro uniony a komplexnější typy. Typickým začátečnickým omylem je použití typu any všude, kde si nejste jistí. To obchází celý systém kontroly a v podstatě se vracíte k JavaScriptu. Místo toho zkuste použít unknown a pak pomocí kontrol typu (tzv. type guards) zúžit, co skutečně chcete povolit.
When you have virtually any issues concerning wherever and also the way to make use of viz zde, you are able to email us at our own webpage.
