14. diel - Best practices pre vývoj softvéru - Vývoj webových aplikácií
V minulej lekcii, Najčastejšie chyby programátorov - Na čo sú algoritmy?, sme sa uviedli do sveta algoritmov. Povedali si, čo to algoritmy vlastne sú a prečo by nás mali zaujímať.
V dnešnom tutoriále kurzu Best practices pre návrh softvéru sa naučíme využívať hotové softvérové riešenia a užitočné nástroje.
Každý technický problém je jednoduchý dovtedy, kým ho začnete implementovať.Aplikácie, či už webové, desktopové alebo mobilné, sa vyvíjajú každý deň. Ich vývoj ide nezastaviteľne a obrovskou rýchlosťou dopredu. Klienti požadujú svoje aplikácie rýchlo hotové, a preto nie je možné, aby vývoj takejto aplikácie zabral roky. Minimalizuje sa čas vývoja a zvyšuje sa ich kvalita a rozsah. Ako držať krok s takýmto vývojom? Ako urobiť aplikáciu rýchlo a zároveň aj kvalitne? Lekcia je zameraná na vývoj webových aplikácií, ale niektoré postrehy môžu byť užitočné aj vývojárom aplikácií mobilných alebo desktopových.
Nesnažte sa urobiť aplikáciu rýchlo, ale kvalitne
Veľa ľudí, webových vývojárov, grafikov a ďalších sa snaží urobiť aplikáciu alebo web čo najrýchlejšie. Nedochádza im však, že kvôli tomu obetujú kvalitu či rozsah aplikácie a proces vývoja tým naopak môžu ešte spomaliť. Väčšinou robia elementárne chyby, ktoré môžu mať fatálny vplyv na termín dokončenia aplikácie či na ich bezpečnosť alebo funkčnosť.
Naučte sa používať hotové riešenia efektívne
Pre frontend aj backend aplikácia existuje na webe obrovské množstvo použiteľných materiálov. Či už sú to rôzne grafické prvky alebo serverové komponenty, to všetko je už niekde najskôr hotové.
Kameň úrazu použitie riešení tretích strán
Umenie je ale rozpoznať tie správne. To sú komponenty, ktoré:
- sa do nášho projektu najviac hodí
- ktoré majú vhodnú licenciu
- ktoré sú dostatočne populárne
Príklady knižníc a frameworkov sú napríklad Bootstrap, React, Spring alebo Font Awesome.
Automatizujte si všetko, čo len ide
Webová stránka či aplikácia väčšinou obsahuje množstvo skriptov, štýlov, obrázkov a ďalších vecí. Štýly a JavaScript sa pritom v produkčných verziách takzvane minifikujú (odstránia sa komentáre, premenujú premenné a podobne) pomocou externých nástrojov. Čo jednak zrýchli načítanie a tiež sťaží ostatným ľuďom čítať kód.
Proces nasadenia aplikácie na produkčný server tak môže byť dosť zdĺhavý, pretože toto robíme manuálne. Všetko si ale môžeme automatizovať. Existuje množstvo knižníc, ktoré nám minifikujú kód, zlúčia nám súbory skriptov, automaticky vygenerujú náhľady alebo dokonca nahrajú celý projekt na FTP a pritom vykonajú všetko, čo je potrebné. Takéto nástroje nám môžu vo výsledku ušetriť hodiny práce. Ako príklady si uveďme nástroje Gulp a Webpack.
Používajte frameworky
Pri vývoji akejkoľvek aplikácie vždy narazíme na veci, ktoré sa opakujú a ktoré riešime stále dookola na väčšine projektov. Také základné alebo aj pokročilejšie prvky nám môžu zabrať veľa času. Za všetky problémy si spomeňme napr. validáciu pri formulároch. Pritom ich nemusíme vôbec vyriešiť správne (napr. správne escapovanie), čo opäť bude mať veľký dopad na bezpečnosť, funkčnosť alebo výkon. V každom jazyku tak vznikli rôzne frameworky, ktoré viac či menej tieto problémy riešia a snažia sa nám uľahčiť proces vývoja aplikácie. Bolo by dosť pochabé tieto frameworky prehliadať. Najpopulárnejšie frameworky sú napr. Spring pre Javu a React pre JavaScript.
Vlastné frameworky
Frameworky používame vždy. Niekedy si ich aj môžu firmy tvoriť samy, s takýmto frameworkom nás potom naučia pracovať. To je často v prípade, že vyvíjajú nejaký svoj jeden systém, ktorý musí zostať dlho podporovaný a nemal by závisieť od meniacich sa frameworkoch tretích strán. Toto je prípad aj ITnetwork, kde už vyše 10 rokov vyvíjame len jeden informačný systém a za tú dobu už niekoľko v tom čase populárnych frameworkov úplne zmizlo.
Urobte si návrh aplikácie
Ešte pred tým, než sa do niečoho pustíte, musíte analyzovať zadanie. Ťažko sa dá odhadovať termín dokončenia aplikácie, keď ani nevieme, čo všetko bude jej vývoj obnášať a či naň vôbec stačíme. Návrh aplikácie je veľmi dôležitý. Či už si budete robiť poznámky na papier alebo kresliť všemožné UML diagramy, určite vám to pomôže pri vývoji.
Naštudujte si a používajte návrhové vzory a idiómy
Návrhové vzory a všeobecne architektúra aplikácie je veľmi dôležitá. Zaisťuje nám rozšíriteľnosť, znovupoužiteľnosť a prehľadnosť kódu. Znalosť návrhových vzorov nám nielenže pomôže pri vývoji, kedy budeme jasne vedieť, ako problém čo najlepšie implementovať, zaručia nám overené postupy, ale tiež pomáhajú pri komunikácii v tíme programátorov. Je totiž oveľa pohodlnejšie a jednoduchšie povedať programátorovi, aby danú vec implementoval ako Observer, ako mu to zložito vysvetľovať. Človek znalý návrhových vzorov môže byť veľkým prínosom pre tím.
Testovať, testovať, testovať!
Vec, ktorá je mnohými hlavne začínajúcimi vývojármi či investormi podceňovaná a odsudzovaná. Pritom testujeme skoro stále a ani si to neuvedomujeme. Každý totiž robíme chyby. Koľkokrát ste si už pri vývoji vypísali obsah premennej? To je testovanie, avšak problém týchto testov je, že ich z aplikácie hneď po odstránení problému vyradíme.
Je dôležité písať automatizované testy. Také testy potom môžeme ľahko kedykoľvek spúšťať. Sú veľmi dôležité, či už robíme na projekte sami alebo s tímom programátorov. Kód sa oplatí testovať vždy. Testy nám totiž môžu odhaliť nezabezpečené časti aplikácie, neošetrené vstupy a veľmi nám pomôžu napríklad pri refaktorovaní. Vždy sa o ne môžeme oprieť, avšak pozor, mať aplikáciu na 100 % pokrytú testami ešte neznamená ju mať dokonale zabezpečenú.
Verzujte kód
Zvlášť pokiaľ robíte na aplikáciu s niekoľkými ľuďmi, narazíte na problém, ako zmeny v kóde, ktoré ste vykonali, bezpečne doručiť ostatným členom tímu. Odpoveďou je verzovanie. To nám umožní zmeny v kóde nahrávať na vzdialený (či lokálny) server, kam sa uložia a odtiaľ si ich môžu stiahnuť všetci členovia tímu. Navyše sa môžeme vo verziách ľubovoľne vracať späť napríklad k poslednej funkčnej verzii. Z verzovacích systémov je najpopulárnejší Git. Nemenej dôležité je tiež kód dobre okomentovať a zvoliť si nejaký štandard písania kódu, aby bol jednotný v celom projekte.
Zálohujte si svoju prácu
V neposlednom rade si kód zálohujte. Častým omylom býva, že si ľudia myslia, že sa kód zálohuje verzovaním, teda napr. stačí používať Git. Záloha by sa ale mala tvoriť automaticky a nespoliehať sa na to, že zmeny v kóde nezabudnete commitnúť a hlavne potom zmeny pushnúť. Úplne najjednoduchšie je mať lokálne zdrojové súbory na nejakom synchronizovanom úložisku, napr. Dropboxu. Pretože firemný kód môže byť problém takto niekam nahrávať, je potrebné sa poradiť v danom tíme, ako zálohy svojej práce riešia.
V nasledujúcej lekcii, Best practices pre vývoj softvéru - Práca s heslom, si vysvetlíme bezpečnostné hrozby spojené s ukladaním hesiel používateľov.