Jak rychle a kvalitně vytvořit (nejen) webovou aplikaci?

HTML a CSS Ostatní Jak rychle a kvalitně vytvořit (nejen) webovou aplikaci?

„Každý technický problém je jednoduchý do té doby, než ho začnete implementovat.“

Aplikace ať už 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 vývoj takové aplikace zabral roky. Minimalizuje se čas vývoje a zvyšuje se jejich kvalita a rozsah. Jak držet krok s takovými aplikacemi? Jak udělat aplikaci rychle a zároveň také kvalitně? To bude téma tohoto článku. Článek jsem zaměřil na vývoj spíše webových aplikací, ale některé postřehy by se mohly hodit i vývojářům aplikací mobilních nebo desktopových.

Nesnažte se udělat aplikaci rychle, ale kvalitně

Spousta lidí, webových vývojářů, grafiků a dalších se snaží udělat 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 naopak mohou ještě zpomalit. Většinou dělají elementární chyby, které mohou mít fatální dopad na termín dokončení aplikace či na jejich bezpečnost nebo funkčnost.

Naučte se používat hotová řešení efektivně

Speciálně pro frontend (ale i pro backend) aplikace existuje na webu obrovské množství použitelných materiálů. Ať už jsou to různé grafické prvky nebo komponenty, to vše už na webu nejspíš je. Umění je ale rozpoznat ty správné, které se do projektu nejvíce hodí a které si případně můžeme upravit (tj. mají vhodnou licenci a otevřený kód). Příklad takového hotového řešení je třeba Twitter bootstrap nebo Font awesome.

Automatizujte si vše, co jen jde

Webová stránka či aplikace většinou obsahuje množství skriptů, stylů, obrázků a dalších věcí. Styly a JavaScript se přitom v produkčních verzích takzvaně minimalizují (odstraní se komentáře, přejmenují proměnné apod.) pomocí externích nástrojů, což jednak zrychlí načítání a také znesnadní ostatním lidem číst kód. Proces nasazení aplikace na produkční server tak může být dost zdlouhavý, jelikož tohle děláme manuálně. Vše si ale můžeme automatizovat. Existuje spousta knihoven, které nám minimalizují 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.

Používejte frameworky

Při vývoji jakékoli aplikace vždy narazíme na věci, které se opakují a které většinou řešíme stále dokola na většině projektech. Takové základní nebo i pokročilejší prvky nám mohou zabrat spoustu času. Přitom je nemusíme vůbec 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.

Udělejte si návrh aplikace

Ještě před tím, než se do něčeho pustíte, musíte analyzovat problém. 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 pomůže při vývoji.

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 nejenže pomůže při vývoji, kdy budeme jasně vědět, jak problém co nejlépe implementovat, zaručí nám ověřené postupy, ale také pomáhají při komunikaci v týmu programátorů. Je totiž mnohem pohodlnější a jednodušší, říct programátorovi, aby danou věc implementoval jako Observer, než mu to 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é? To je testování, avšak problém těchto testů je, že je z aplikace hned po odstranění problému vyřadíme. Je důležité psát testy automatizované. 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

Zvlášť pokud děláte 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 můžeme ve verzích libovolně vracet zpět třeba k poslední funkční verzi. Verzovacích systémů je mnoho, a tak máte z čeho vybírat. 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ávěr

Vývoj aplikace a webových stránek už dnes není záležitost jednoho člověka. Na vývoji se většinou bude podílet více lidí. Tento článek byl jen lehkým shrnutím poznatků, které jsem získal při vývoji aplikací a webu.


 

  Aktivity (1)

Článek pro vás napsal Drahomír Hanák
Avatar
Autor v současné době studuje Informatiku. Zajímá se o programování, matematiku a grafiku.

Jak se ti líbí článek?
Celkem (9 hlasů) :
55555


 


Miniatura
Předchozí článek
Tvorba submenu jen v HTML a CSS
Miniatura
Všechny články v sekci
Ostatní články o HTML a CSS

 

 

Komentáře
Zobrazit starší komentáře (23)

Avatar
Kit
Redaktor
Avatar
Kit:

Je to obráceně: Kromě testů se píše ještě i produkční kód. Testy se píší vždy jako první. Slouží také jako specifikace zadání. Kód se pak napíše tak, aby ty testy prošly.

Se zbytkem souhlasím.

Odpovědět 31.1.2013 8:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Kit
Drahomír Hanák:

Nechtěl jsem tím narážet na to, kdy by se měly testy psát. Pokud se píší ještě před produkčním kódem, pak mluvíme o TDD. Jsem ale toho názoru, že nemusí být nutně špatně, psát testy až po produkčním kódu. Jen nesmím odkládat psaní testů na někdy jindy. Vždy je musím psát současně s danou funkcionalitou.

 
Odpovědět 31.1.2013 18:21
Avatar
kny
Neregistrovaný
Avatar
kny:

ja vim, ze tady teoretizujem, ale bez frameworku fakt 10 radku neudela skoro nic. ale urcite utlocitnosti vuci "balastu" rozumim. ne vzdy je na miste a stejny pozadavek maji vsichni, takze i ty frameworky se snazi balastu vyvarovat.
pokud chce nekdo vynalezat kolo, ja mu to preju/nezavidim.

 
Odpovědět 1.2.2013 16:45
Avatar
kny
Neregistrovaný
Avatar
kny:

zajima me prave o jakych projektech se teda bavime? eshop typu alza? portal typu centrum? aplikaci jako stream?
ok, to je na tymy, testovani, verzovani a to jsou systemy za milion(y), nevim kolik lidi se k necemu takovemu dostane (v ramci tech, co klikaji na clanek "Jak rychle a kvalitně vytvořit (nejen) webovou aplikaci?"), vetsina lidi imho dela nejake prezentace/mi­krosajty a kdyz si ohnou wordpress tak, ze tam maji custom policka nebo post typy, tak se citi jako velci magove :)

anebo jsem mimo a vsichni tu jedeme portal za potalem. tze by me zajimalo co delal konkretne autor (staci napsat "velky eshop velikosti mall", nebo tak neco, at si to zaradim.)

jen aby bylo jasne, ja jsem "garazovy bastlic", neni to muj hlavni obor/obziva, ale mozna proto jsem asi proklikl a dozvidam se, ze mam smulu, pac jako jedinec v roce 13 uz nemam na webove stranky ani na aplikace...

 
Odpovědět 1.2.2013 16:56
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na kny
Drahomír Hanák:

"ok, to je na tymy, testovani, verzovani a to jsou systemy za milion(y)"
Asi máme každý jinou představu. Testování a verzování přece nejsou systémy za milióny, nebo se snad mýlím? Tým nemusí znamenat 30 lidí. Mohou to být bohatě třeba jen dva programátoři. Nejenže je vývoj rychlejší (samozřejmě nemusí platit vždy), ale v týmu se také vždy můžu zeptat ostatních, jak by daný problém řešili oni.

Jako příklad můžu uvést třeba http://www.spaceteacher.com - startup, na kterém dělá tým hned několika programátorů, http://www.ferol.cz - průměrný web s administrací na míru, http://faiblemodeles.cz/ (vůbec, všechny weby, co jsem dělal v rámci http://www.nuvel.eu/) a další. Třeba k takovým projektům jsem se dostal a nepochybuji o tom, že mi testování a verzování pomohlo. Nepochybuji ani o tom, že kdybych měl projekty tohoto typu dělat sám, vývoj by se hodně protáhl a nejspíš bych je udělal o dost hůř (jak z hlediska návrhu, tak i funkčnosti). Ještě podotýkám, že používám hotová řešení, frameworky a další věci, které šetří čas (sám to v článku vyzdvihuji). I přesto si na svém názoru trvám. Souhlasím ale, že když dělám e-shop typu http://www.elektropower.cz/ nebo takové různé prezentační stránky, stačím na to sám.

Nakonec bych chtěl taky podotknout, že článek je určen lidem, co s vývojem začínají (třeba znají syntaxi, ale chtějí to dělat líp). Netvrdím, že mám nějaké velké zkušenosti, ani že vím, jak to udělat nejlíp. Proto jsem rád za tuhle diskuzi a třeba se i mýlím :) Píšu ale ze své zkušenosti a jak je uvedeno na konci článku, "Tento článek byl jen lehkým shrnutím poznatků, které jsem získal při vývoji aplikací a webu."

 
Odpovědět 1.2.2013 17:42
Avatar
Kit
Redaktor
Avatar
Odpovídá na Drahomír Hanák
Kit:

Když napíšeš test jako první, tak si tím zpravidla ujasníš zadání. To je velká výhoda TDD. Nevýhodou TDD je, že na začátku se každý začne učit framework JUnit nebo PHPUnit a ta složitost ho odradí. Je lepší začít bez těchto frameworků, aby programátor pochopil princip TDD.

Testování na začátku trochu zpomalí, ale bohatě se to vrátí za polovinou projektu. Také se to osvědčilo po upgrade běhového prostředí. Přece jen každá verze PHP funguje trochu jinak...

Programy pro verzování a testování jsou zdarma a dá se verzovat i bez serveru.

Odpovědět 4.2.2013 8:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na kny
Kit:

Když srovnám třeba Dibi s mým vlastním wrapperem na 100 řádek, který dělá jen to, co potřebuji, ...

Odpovědět 4.2.2013 8:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
macesko
Člen
Avatar
macesko:

Ahoj, existuje nejaky software pro automaticke cislovani verze a jake jsou treba zajimave programy na zautomatizovani?

 
Odpovědět 26.2.2013 3:49
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na macesko
Drahomír Hanák:

Ahoj, verze umí číslovat verzovací systém. Pokud ti jde o nějaké sématické verzování, podívej se na http://semver.org

 
Odpovědět 26.2.2013 7:01
Avatar
Kit
Redaktor
Avatar
Odpovídá na macesko
Kit:

Pro číslování verzí i pro verzování samotné se hodí programy Git, Mercurial a Bazaar.

Odpovědět 26.2.2013 9:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 33. Zobrazit vše