0
Ohodnoť!

Nekuchejme do Frameworku

napsal Inza


V současné době se zajímám a aktivně podílím na událostech okolo vývoje nadějného českého PHP frameworku Nette a v souvislosti s opakovaným výskytem jistého komunikačního patternu na nette fóru mě napadá úvaha nad tím, kde vlastně Framework v aplikaci začíná a kde končí…

Aplikace = Framework + MVP?

Co je to vlastně framework? – Framework je sada knihoven (skriptů, tříd, …whatever…), která zapouzdřuje běžné a často opakované operace, které používají všichni. Když chci pomocí frameworku vyvíjet aplikaci, z čeho pak ta aplikace vlastně je? Co ji tvoří?

Framework. Jistě. A dál? No kromě frameworku ji tvoří další kód, který ten framework rozšiřuje, popřípadě konkretizuje a dále specifikuje chování aplikace… Podobu tohoto kódu již specifikuje framework sám, svým API, skrze které je dále rozšiřitelný. Popřípadě ji navíc může tvořit kód, který je jaksi „nad frameworkem“ – ale that's not the right way, is't it?

Ne, aplikace = Framework + MVP + helpery/Control­s/Components…

V případě Nette tedy aplikaci tvoří: Nette, MVP a helpery, alternativně Controls a Komponenty… Popřípadě, díky vyjímečnosti Nette, jakékoliv mé komponenty (třídy), které implementují požadovaná rozhraní a jdou tak do Nette zasunout…

Kde ale tedy Framework končí a aplikace začíná?

Toť otázka. Framework je to, co stáhnete z SVN a aplikace to, co si k tomu dopíšete. Možná máte při používání některého z Frameworků pocit, že nedělá něco tak jak chcete a chcete si to přepsat. Jistě, to se stává je to celkem běžný jev. Jak to ale přepíšete?

Ne, do Frameworku se nešťourá a Framework se neohýbá! Když chcete ve frameworku něco předělat, ne že přepíšete jeho třídy nebo metody! Hezky použijete jeho API pro rozšíření a nebudete ho ohýbat. A jakže poznám jestli jsem ho ohnul? Jednoduše, updatněte na novou revizi (či verzi Frameworku) a když vše funguje, vyvíjíte správně. Když ne, jdete špatnou cestou.

Že váš Framework žádné API pro rozšiřování nemá? Že v něm nemůžete legálně (bez ohýbání) vyměnit některé jeho části? No, tak to potom používáte špatný Framework…

Nette this way


Související příspěvky:


Štítky: ,

Tři komentáře na “Nekuchejme do Frameworku”

  1. pepaNo Gravatar říká :

    do Frameworku se nešťourá a Framework se neohýbá

    ale ale…tomu snad neveris ? :-)

    dokud je uzivatel pouze common, tak to asi plati

    ve chvili, kdy uzivatel chce vic, nekdy k tomu dojde…a vzdycky tomu tak bude a
    proto jsou majoritni novy verze (uz ne 1.545 ale 2.0), protoze kulicka, kterou si autori vali pred sebou kvuli jedny nedomysleny stupidite, se zvetsila na nekontrolovatelnou velikost…a jsou to taky novy technologie, ktery za to muzou

  2. Jiří KneslNo Gravatar říká :

    Položil sis otázku, na kterou člověk nemůže najít odpověď tím, že budeš poznávat pouze jeden framework. A hlavně se dopouštíš chyby, že redukuješ framework na: „knihovnu“.

    Tak to ale vůbec není. Framework je „rámec práce“. Framework může být knihovna, kniha, mentální přístup, souhrn principů. Většinou je to od každého něco a v každém frameworku je to namíchané úplně jinak.

    Kde končí princip a začíná jeho aplikace? Tam končí framework a začíná aplikace.
    Kde končí knihovna a začíná její použití? Tam končí framework a začíná aplikace.
    Kde končí kniha a začíná čin? Tam končí framework a začíná aplikace.

    Problém nastává, když ten „rámec práce“ znáte a vědomě si ho změníte – to ani nemusíte sáhnout do kódu frameworku (můžete si posunout výklad nějakého principu – nejčastěji když se přesunuje kód z modelu do controlleru, nebo když se model redukuje pouze na ActiveRecord). V tu chvíli vyvíjíš aplikaci, nebo svůj framework s cizími zdrojáky?

  3. BorekNo Gravatar říká :

    [1] Jak bylo napsáno v článku, pokud potřebuješ framework „ohnout“, našel jsi jeho slabinu. Dobrý framework je upravitelný pomocí jeho API, monkey patching je vždycky špatně.

Komentuj to

Než vložíš komentář, měl bys vědět:

  • Komentáře formátuje Texy2
  • Komentáře podporují Gravatary, jestli žádného ještě nemáš, udělej si ho, nebo nafasuješ MonsterID
  • Zdrojové kódy vkládej mezi "/--code" a "\--" - zformátuje a zvýrazní je Texy
  • Více příkladů jak psát sexy v Texy najdeš na webu Texy
  • Neváhej říct svůj názor, kritizovat, nebo se na cokoliv zeptat. Přesně od toho tu komentáře jsou
  • Můžeme si tykat