Lekce 14 - Best practices pro vývoj softwaru - Vývoj webových aplikací
V minulé lekci, Best practices pro vývoj softwaru - K čemu jsou algoritmy?, jsme probrali úvod do světa algoritmů. Řekli jsme si, co to algoritmy vlastně jsou a proč by nás měly zajímat.
V dnešním tutoriálu kurzu Best practices pro návrh softwaru se naučíme využívat hotová softwarová řešení a užitečné nástroje.
Každý technický problém je jednoduchý do té doby, než ho začnete implementovat.
Aplikace – ať už ty webové, desktopové, nebo mobilní – se vyvíjejí každý den. Jejich vývoj jde nezastavitelně a obrovskou rychlostí kupředu. Klienti požadují své aplikace rychle hotové, a proto není možné, aby jejich vývoj zabral roky. Minimalizuje se čas vývoje a zvyšuje se kvalita i rozsah aplikací. Jak s takovým vývojem držet krok? Jak vytvořit aplikaci rychle a zároveň kvalitně? Tato lekce je zaměřena především na vývoj webových aplikací, ale některé postřehy mohou být užitečné i vývojářům aplikací mobilních nebo desktopových.
Nesnažte se udělat aplikaci rychle, nýbrž kvalitně
Spousta lidí, webových vývojářů, grafiků a dalších se snaží vytvořit aplikaci či web co nejrychleji. Nedochází jim ale, že kvůli tomu obětují kvalitu či rozsah aplikace, a proces vývoje tím mohou naopak ještě zpomalit. Většinou se dopouštějí elementárních chyb, které mohou mít fatální dopad na termín dokončení aplikace či na její bezpečnost nebo funkčnost.
Naučte se používat hotová řešení efektivně
Pro frontend i backend aplikace existuje na webu obrovské množství použitelných materiálů. Ať už jsou to různé grafické prvky, nebo serverové komponenty, to vše už je někde nejspíše hotové.
Kámen úrazu použití řešení třetích stran
Je však umění rozpoznat ty správné komponenty. To jsou takové, které:
- se do našeho projektu nejvíce hodí,
- které mají vhodnou licenci,
- které jsou dostatečně populární.
Poslední bod je nejdůležitější. Často se stane, že najdeme dokonalou knihovnu přesně pro náš účel, ale jedná se o nějaký malý hobby projekt. U takových projektů je bohužel velmi vysoká šance, že se navzdory kvalitě a nápadu neuchytí. Aby se knihovna stala úspěšnou, musí být nejen dobrá, ale musí být také „ve správný čas na správném místě“. Lépe tedy vychází použít obyčejnější a třeba i méně kvalitní, ale populární a známé knihovny, na kterých staví již tolik velkých projektů, že budou jistě stále podporované. Není nic horšího než postavit projekt na frameworku, který za rok přestane existovat!
Příklady knihoven a frameworků jsou třeba Bootstrap, React, Spring nebo Font Awesome.
Automatizujte si vše, co jen jde
Webová stránka či aplikace většinou obsahují množství skriptů, stylů, obrázků a dalších věcí. Styly a JavaScript se přitom v produkčních verzích takzvaně minifikují (odstraní se komentáře, přejmenují proměnné a podobně) pomocí externích nástrojů. Což jednak zrychlí načítání a jednak znesnadní ostatním lidem číst kód.
Proces nasazení aplikace na produkční server tak může být dost zdlouhavý, jelikož toto provádíme manuálně. Vše si ale můžeme automatizovat. Existuje spousta knihoven, které nám minifikují kód, sloučí nám soubory skriptů, automaticky vygenerují náhledy, nebo dokonce nahrají celý projekt na FTP a přitom provedou vše, co je potřeba. Takové nástroje nám mohou ve výsledku ušetřit hodiny práce. Jako příklady si uveďme nástroje Gulp či Webpack.
Používejte frameworky
Při vývoji jakékoli aplikace vždy narazíme na věci, které se opakují a které řešíme stále dokola na většině projektů. Takové základní nebo i pokročilejší prvky nám mohou zabrat spoustu času. Za všechny problémy zmiňme např. validaci u formulářů. Tyto věci přitom vůbec nemusíme vyřešit správně (např. správné escapování), což opět bude mít velký dopad na bezpečnost, funkčnost nebo výkon. V každém jazyce tak vznikly různé frameworky, které více či méně tyto problémy řeší a snaží se nám usnadnit proces vývoje aplikace. Bylo by dost pošetilé tyto frameworky přehlížet. Nejpopulárnějšími frameworky jsou např. Spring pro Javu či React pro JavaScript.
Vlastní frameworky
Frameworky používáme vždy. Někdy si je firmy mohou tvořit i samy, s takovým frameworkem nás potom naučí pracovat. To se často děje v případě, že firma vyvíjí nějaký svůj jeden systém, který musí zůstat dlouho podporovaný a který by neměl záviset na měnících se frameworcích třetích stran. Toto je případ i ITnetwork, kde již přes 10 let vyvíjíme jeden informační systém. Za tu dobu již několik ve své době populárních frameworků úplně zmizelo.
Udělejte si návrh aplikace
Ještě před tím, než se do něčeho pustíte, musíte analyzovat zadání. Těžko se dá odhadovat termín dokončení aplikace, když ani nevíme, co všechno bude její vývoj obnášet a jestli na něj vůbec stačíme. Návrh aplikace je velice důležitý. Ať už si budete dělat poznámky na papír, nebo kreslit všemožné UML diagramy, určitě vám to při vývoji pomůže.
Nastudujte si a používejte návrhové vzory a idiomy
Návrhové vzory a obecně architektura aplikace je velmi důležitá. Zajišťuje nám rozšiřitelnost, znovupoužitelnost a přehlednost kódu. Znalost návrhových vzorů nám pomůže nejen při vývoji, kdy budeme jasně vědět, jak problém co nejlépe implementovat, a zaručí nám ověřené postupy, ale také nám pomůže při komunikaci v týmu programátorů. Je totiž mnohem pohodlnější a jednodušší říci programátorovi, aby danou věc implementoval jako Observer, než mu postup složitě vysvětlovat. Člověk znalý návrhových vzorů může být velkým přínosem pro tým.
Testovat, testovat, testovat!
Věc, která je mnohými, hlavně začínajícími vývojáři či investory podceňována a odsuzována. Přitom testujeme skoro pořád a ani si to neuvědomujeme. Každý totiž děláme chyby. Kolikrát jste si už při vývoji vypsali obsah proměnné? I to je testování. Problém těchto testů však spočívá v tom, že je z aplikace ihned po odstranění problému vyřadíme.
Je důležité psát automatizované testy. Takové testy pak můžeme snadno kdykoli spouštět. Jsou velmi důležité, ať už děláme na projektu sami, nebo s týmem programátorů. Kód se vyplatí testovat vždy. Testy nám totiž mohou odhalit nezabezpečené části aplikace, neošetřené vstupy a velmi nám pomohou třeba při refaktorování. Vždy se o ně můžeme opřít, avšak pozor – mít aplikaci na 100 % pokrytou testy ještě neznamená mít ji dokonale zabezpečenou.
Verzujte kód
Obzvlášť pracujete-li na aplikaci s několika lidmi, narazíte na problém, jak změny v kódu, které jste provedli, bezpečně doručit ostatním členům týmu. Odpovědí je verzování. To nám umožní změny v kódu nahrávat na vzdálený (či lokální) server, kam se uloží a odtud si je mohou stáhnout všichni členové týmu. Navíc se ve verzích můžeme libovolně vracet zpět třeba k poslední funkční verzi. Z verzovacích systémů je nejpopulárnější Git. Neméně důležité je také kód dobře okomentovat a zvolit si nějaký standard psaní kódu, aby byl jednotný v celém projektu.
Zálohujte si svou práci
V neposlední řadě si kód zálohujte. Častým omylem bývá, že si lidé myslí, že se kód zálohuje verzováním, tedy že stačí používat např. Git. Záloha by se však měla tvořit automaticky a nemělo by se spoléhat na to, že změny v kódu nezapomenete commitnout a hlavně posléze pushnout. Úplně nejjednodušší je mít lokální zdrojové soubory na nějakém synchronizovaném úložišti, např. Dropboxu. Protože firemní kód může být problém takto někam nahrávat, je potřeba se poradit v daném týmu, jak zálohy své práce řeší.
V příští lekci, Best practices pro vývoj softwaru - Práce s heslem, si vysvětlíme bezpečnostní hrozby spojené s ukládáním hesel uživatelů.