Pokud jste už vytvořili několik webových aplikací, určitě jste si všimli, že se některé části těchto aplikací dost podobají nebo jsou úplně stejné. Možná vás také napadlo, jak si co nejvíce zjednodušit tvorbu další aplikace využitím toho, co jste vytvořili již dříve. Tento článek je teoretickým úvodem k malé sérii, která vám se znovupoužitím kódu vašich aplikací trochu pomůže.

Typy aplikací

Nejprve zde popíšu typy aplikací podle struktury propojení vstupů, výstupů a zdrojů dat. Vstupy jsou údaje získané od uživatele, nejčastěji to budou GET, POST požadavky, XML požadavek webové služby a další. Výstupy jsou údaje, které se posílají zpět uživateli (formát se může různit od HTML přes XML až po grafiku. Zdroje dat jsou data, která má server k dispozici prostřednictvím databáze, souborů, webových služeb atd.

Monolitická aplikace

Taková aplikace je tvořena nejčastěji jedním kusem kódu v jediném souboru, bez použití složitějších struktur jako jsou funkce nebo objekty:

Schéma monolitické aplikace

Využití části aplikace je možné pouze použitím metody „Copy&Paste“. Pozdější úpravy kódu jsou úměrné délce a složitosti kódu. Tento způsob je vhodný pro opravdu jednoduché aplikace.

Rozčleněná aplikace

Aplikace je rozčleněna na více částí. Jednotlivé části se starají o různé skupiny akcí, jedna třeba o přístup k datovým zdrojům a jiná zase o generování HTML výstupů.

Schéma rozčleněné aplikace

Při správném rozčlenění aplikace není problém znovu použít jednotlivé části, také úpravy aplikace jsou jednodušší.

Použití filtrů

V aplikacích se setkáte s různými formáty vstupních a výstupních dat – například GET a POST požadavky, SQL dotazy posílané do DB, výsledná data z DB, data v XML, výstupní HTML kód a další. Občas se také stane, že potřebujete změnit formát dat (můžete mít výstup jednou jako HTML a jindy jako WAP, XML, PDF nebo obyčejný text). Stejně tak vstupní data mohou být jednou GET nebo POST požadavkem a jindy třeba XML dokumentem.

Schéma aplikace používající fitry

Při této metodě se vstupní data nejprve zpracují vstupním filtrem, ten podle typu dat je zanalyzuje, zkontroluje, zda neobsahují chyby, doplní určité hodnoty a výsledek pak převede do nějakého interního formátu. Výstupní filtr zase naopak převádí interní formát na požadovaný výstupní formát (výstupní filtr může být například šablonový systém). Jak funguje filtr zdrojů dat už asi tušíte.

Výhodou této metody je odděleni aplikační logiky od toho, jakým způsobem aplikace komunikuje s okolím.

Aplikační logika mimo aplikaci

V tomto případě je aplikační logika uložena v samostatném modulu. Tato metoda se hodí také v případě, že chcete jednu aplikační logiku používat ve více aplikacích. Jedna aplikace může být například elektronický magazín a druhá aplikace jeho redakční systém:

Využití jedné aplikační logiky ve více aplikacích

Jaký vnitřní formát použijete, záleží na tom, jaký jazyk nebo jakou platformu požíváte. V PHP to může být například asociativní pole, v jiném prostředí to může být třeba XML.

Způsoby znovupoužití částí aplikace

Metoda „Copy&Paste“

Nelekejte se, i toto je jedna z možností, jak znovu použít část aplikace. Tento způsob má jednu výhodu a tou je jednoduchost. Nevýhoda je, že pokud něco změníte v původní aplikaci, nezmění se zkopírovaná část. Další nevýhodou je, že před zasazením kódu do nové aplikace je často potřeba množství úprav.

Použití funkcí a objektů.

Pokud se některá část kódu často opakuje nebo tvoří nějaký logický celek, je vhodné ji zapsat jako funkci nebo třídu.

Pokud se jedná o jednoduchou operaci, která má několik vstupních parametrů a jednu nebo žádnou výstupní hodnotu, stačí použít funkci. Třídu je vhodné použít tam, kde je zapotřebí třeba vyšší počet vstupních a výstupních proměnných, zpracování dat ve více fázích (například tvorba mailu – nejprve přidáte text, potom přílohu a nakonec vše odešlete, přičemž každá tato akce se provádí jinou metodou třídy), zpracování jedné sady dat více způsoby (máte tabulku s hodnotami, jednou metodou získáte počet hodnot, druhou průměrnou hodnotu) a podobně.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět