Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa do najagilnejšej firmy na trhu - Viac informácií.
IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 EUR/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

14. diel - Best practices pre vývoj softvéru - Vývoj webových aplikácií Nové

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
Posledný bod je najdôležitejší. Často sa stane, že nájdeme dokonalú knižnicu presne na náš účel, ale jedná sa o nejaký malý hobby projekt. Pri týchto projektoch je bohužiaľ veľmi vysoká šanca, že sa aj napriek kvalite a nápadu neuchytia. Aby sa knižnica stala úspešná, musí byť síce dobrá, ale tiež musí byť, ako sa hovorí "v správny čas na správnom mieste". Lepšie teda vychádza použiť obyčajnejšie, napríklad menej kvalitné, ale populárne a známe knižnice, na ktorých stavajú už toľko veľkých projektov, že budú stále podporované. Nie je nič horšie, než postaviť projekt na frameworku, ktorý za rok prestane existovať!

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.


 

Predchádzajúci článok
Najčastejšie chyby programátorov - Na čo sú algoritmy?
Všetky články v sekcii
Best practices pre návrh softvéru
Preskočiť článok
(neodporúčame)
Best practices pre vývoj softvéru - Práca s heslom
Článok pre vás napísal Daniel Zábojník
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje vývoji (a příležitostně navrhování) výjimečných desktopových a mobilních aplikací, grafickému zpracování a všemu co k tomu patří.
Aktivity