Jak zjednodušit vývoj | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Proč potřebujeme frameworky a knihovny?

Proč potřebujeme frameworky a knihovny?

Jak zjednodušit vývoj.

Práce s knihovnami a frameworky je pro vývojáře základní dovedností. Přestože oba nástroje pomáhají vytvářet architekturu softwaru a vývojáři je často používají jako synonyma, existují mezi nimi rozdíly.

Vysvětlíme vám, podle čeho vybírat, abyste úspěšně vyřešili své problémy.

„Cizí“ kód

Frameworky a knihovny jsou nástroje, soubory kódů, vytvořené vývojáři pro usnadnění vývoje softwaru. Tyto kódy se používají při řešení podobných nebo společných problémů.

Zásada vývoje softwaru DRY (Don't repeat yourself) nedoporučuje duplikovat mnohokrát použitý kód. Například, při zpracování řádků jste využili funkci, která přidává velké písmeno na začátek každého nového řádku. Pro tento účel jste použili funkci přidání hlavního písmene na každý nový řádek. Když zapíšete funkci, vytvoříte si malou vlastní knihovnu.

Co je to knihovna?

Knihovna je soubor funkcí, které řeší určitý problém v programu. Může použít šablony zpráv, dříve zkompilovaný kód, třídy nebo podprogramy – může být použita mnohokrát. Programovací jazyky mají standardní knihovny, ale vývojář si může vytvořit i vlastní.

Třídy a metody, které knihovna poskytuje, určují, k čemu se knihovna používá. 

Například matematické knihovny umožňují vývojářům provádět výpočty jednoduše pomocí funkcí a nemusí se zabývat implementačními detaily algoritmů v programu. Přístup do knihoven je obvykle implementován pomocí API.

Co je to framework

Framework je také soubor kódu, ale jeho úkolem je definovat, jak strukturovat a spustit program. Vyžaduje definovat architektury aplikace, například návrhu programu a interpretace kódu. Frameworky jsou „kostrou“ vaší aplikace a jsou často vytvářeny profesionálními vývojovými týmy ve velkých společnostech (například Google).

Pro vytváření webových aplikací se často používá framework AngularJS, který je založen na jazycích HTML a JavaScript a definuje základní parametry projektu: rozvržení stránky pro desktopovou a mobilní verzi, synchronizace s daty na serveru, syntaxi šablony a konzistenci stránky napříč platformami (stejné zobrazení v systému Android a iOS). Pro rozšíření funkčnosti lze k webu založenému na platformě Angular připojit jednu nebo více knihoven. Angular však nelze připojit k jinému frameworku, protože framework určuje, jak má kód na webu běžet.

Použití frameworků a knihoven se často vysvětluje pomocí analogie se stavbou domu. Framework je jako stavební firma, která má nějaké hotové návrhy domu a knihovny jsou pracovní nástroje (jako vrtačka nebo vykružovačka), které lze použít podle vlastního uvážení.

Rozdíl mezi frameworky a knihovnou

Knihovna se připojuje k vašemu kódu a ten se připojuje k frameworku. Hlavní rozdíl mezi frameworkem a knihovnou je v tom, kdo řídí proces vývoje. Programátor se může obrátit na knihovnu, když chce. V tomto případě je zodpovědný za proces zpracování programu a posloupnost příkazů. Při použití frameworku se role mění, framework se sám obrací na váš kód a dává vám prostor pro doplnění detailů. Proto se tomuto rozlišení říká inverze řízení.

Zjednodušeně si to můžete představit takto:

  • Knihovna: zadejte nám příkaz k provedení práce.
  • Framework: nedávejte nám příkaz, my vám ho dáme.

V programování existuje subjektivní parametr – „tvrdohlavost“ knihoven a frameworků. Jedná se o míru volnosti, kterou má vývojář při strukturování kódu.

Právě kvůli inverzi řízení jsou frameworky tvrdohlavější a jsou schopny více automatizovat vývoj. O psaní kódu rozhodují sami. Framework například pomáhá vytvářet autorizační formuláře, tabulky nebo automaticky generuje rozvržení. Některé frameworky dokonce určují umístění nebo názvy souborů.

Tento přístup se nazývá convention over configuration  (konvence nad konfigurací). Při něm vývojář nemusí konfigurovat většinu parametrů programu. 

Různé frameworky mají různou míru  „tvrdohlavosti“.

Například framework Ruby on Rails (RoR) je označován za velmi tvrdohlavý. Když v RoR vytvoříte nový projekt, okamžitě se vytvoří složky a soubory se spoustou kódu. Když například vytvoříte model User, framework očekává, že bude svázán s UsersController. Díky předem napsanému kódu Rails propojí modely a kontroléry na pozadí.

Porovnejme tento přístup s použitím knihovny Chart.js, která vytváří diagramy v jazyce JavaScript. Vy určujete, kde a kdy zavolat Chart.js, ale musíte určit typ grafu, barvy a ohraničení. Knihovna odpovídá pouze za informace pro grafy.

Dobré frameworky se snadno rozšiřují. Poskytují základní funkce pro vývoj programu, ale zůstávají otevřené změnám. Frameworky generují velké množství kódu, který vývojář obvykle nemění.

Při použití knihovny je třeba pochopit, co která metoda dělá. Na druhou stranu frameworky vyžadují, aby vývojář použil konkrétní programovací paradigma (funkcionální, deklarativní, imperativní) a rozuměl logice procesů. Učení frameworků proto zabere více času, ale poskytují možnost vytvořit celý projekt nebo jeho prototyp.

Neexistuje univerzální odpověď na otázku, kdy je lepší použít framework a kdy knihovnu. Pokud však na projektu používáte framework, je lepší ho použít pro daný úkol. Knihovnu potřebujete, pokud vám funkce frameworku nestačí nebo pokud máte pokročilé znalosti knihovny a chcete řešit problém nestandardním způsobem.

Autor: Alexander Tartačný

Více článků
Příručka od robot_dreams s příkladem syntaxe
Kam se dnes posouvají technologické hranice robotiky?