Zobrazují se příspěvky se štítkemnávrhové vzory. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemnávrhové vzory. Zobrazit všechny příspěvky

sobota 13. prosince 2008

Některým programátorům urvat koule je málo

Opakovaný kód

Privátní statické metody v místech, kde nemají co dělat (kontrakt WCF služby, pomocné metody typu "vrať mi, kolik je a plus b")

Plochá objektovost

Kopírovaný kód (psal jsem sice výš, ale tohle je opravdu tak špatný dělat...)

Sémantika. Nazvat proměnnou "promenna_1", "promenna_2"

Absence smysluplných komentářů. Mám-li kód: "var result = a + b;" a u něj komentář: "Sčítáme proměnnou 'a' a 'b' do výsledku 'result'

A teď si představte, že nejde o žádného junior programátora, ale člověka, co má certifikaci Solution Developera a programuje víc než deset let.

Takovým nechat urvat koule je málo - a pokud to není ve vaší moci, alespoň je vyhoďte. Neuvěřitelným způsobem totiž dokážou zatěžovat váš tým.
Proč? Je jedno, že ten kód napráskali během jednoho člověkodne, když vás pak oprava chyby, kterou dostane na starosti jiný programátor stojí těch člověkodnů několik.

úterý 26. srpna 2008

Návrhové vzory v PHP / Desing pattern - Adapter

Rovnou navazuji na předchozí příspěvek...

Návrhový vzor adapter použijete, když potřebujete, aby se například část logiky uvnitř nějaké třídy řídila v závislosti na jejím použití.

Povídání o adapteru je tady:

http://www.dofactory.com/Patterns/PatternAdapter.aspx

A teď radši rychle příklad. Představte si třídu, která autentizuje uživatele. Ale vy nechcete, aby tato třída natvrdo autentizovala uživatele například vůči databázi, chcete, aby bylo možné nastavit, jak má uživatele autentizovat. To uděláte právě pomocí vzoru Adapter.

Čili, třída bude mít metodu "autentizuj" a vy jí předáte instanci jiné třídy (Adapter třídy), která řekne jak.

Opět nádherně použito v praxi, v Zend Frameworku, zde:

http://framework.zend.com/manual/en/zend.auth.html#zend.auth.introduction.adapters

Návrhové vzory v PHP / Design pattern - Factory Method

(Poznámka: Pokud nemáte vůbec šajnu, co je to objektové programování, třída, instance, rozhraní, abstrakce, polymorfismus, tak nejdřív začněte tady:
http://php.interval.cz/objektove-orientovane-programovani-oop-v-php/
)

Nechci tu zas zbytečně něco opisovat, takže pro ty, co neví, co jsou vlastně návrhové vzory (neboli design patterns):

http://cs.wikipedia.org/wiki/N%C3%A1vrhov%C3%BD_vzor

Tak a teď konkrétněji o Factory Method:

Tento návrhový vzor použijete v případech, kdy máte skupinu objektů se společným rozhraním (například třídy pro interakci s různými databázemi) a potřebujete něco, co vám vytvoří konkrétní instance takových tříd na základě nějakého parametru.

Asi jako, dej mi třídu, která pracuje s MySQL, dej mi třídu, která pracuje s FireBird, atd.

Bližší info o samotném návrhovém vzoru tady:

http://www.dofactory.com/Patterns/PatternFactory.aspx

A kde je to použito v praxi:

http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.connecting.factory

Mimochodem, Zend Framework je pro PHPkáře skvělý právě pro studium návrhových vzorů a jejich použití v reálném světě. Rozhodně na něj neodkazuji naposledy.

čtvrtek 21. srpna 2008

Je singleton zlo? - NESMYSL

Autor v tomto článku rozebírá, zda je použití Sinleton pattern v jazyce PHP zlo. Prosím vás, děláte si legraci?

http://phpfashion.com/je-singleton-zlo

Jednoduchá odpověď zní: Není to zlo.

Singleton má svůj účel, nebudu tady jen něco opisovat, čtěte tady (a sami si dohledejte další informace):

http://www.dofactory.com/Patterns/PatternSingleton.aspx

Singleton je návrhový vzor a tak je jej nutné brát a chápat. A pokud nevíte na co by byl v PHPku, tak čtete zase třeba tady:

http://framework.zend.com/manual/en/zend.auth.html (použití Singleton patternu na autentizaci uživatele v Zend Framework)

Zpátky k příspěvku autora, chápu argumenty, částečně s ním souhlasím, vadí mi něco zcela jiného. Uvažuji-li, že návštěvník jeho stránky přijde kvůli tomu, aby se dozvěděl něco o Singleton pattern, díky autorovi ho zavrhne.

To je hloupé a hrozně krátkozraké. Nedělejte to. Naučte se, a hlavně pokuste se pochopit, návrhové vzory.

Udělají z vás lepší OOP programátory.