Recenze úspěšné knihy Rudolfa Pecinovského, "bichle", který vás provede zákoutími návrhových vzorů. Jednoduše řečeno: recenze příručky správného programátora.
Ač by se z názvu mohlo zdát, že dnes na Programujte.com budeme recenzovat knížku, která bude radit ženám všeho věku, jak správně vyšít ten či onen tvar, opak bude pravdou. Kniha Návrhové vzory naopak patří mezi literaturu, která díky svému tematickému zaměření není určená všem, i když každý správný programátor by měl mít minimálně povědomí o tom, co to návrhové vzory jsou a kde se s nimi může setkat.
Návrhové vzory, anglicky „design patterns“, patří mezi pokročilejší znalosti v oblasti programování. Jedná se o „doporučené“, standardizované postupy, které mají usnadnit vývoj aplikací. Jak sám autor, Rudolf Pecinovský, v knize přirovnává, jedná se o jakousi obdobu matematického vzorečku.
Z daného přirovnání tedy vyplývá, že se nejedná o příručku, která by byla spjata s jedním programovacím jazykem. Návrhové vzory lze více či méně implementovat nebo uplatnit ve všech programovacích jazycích, a tak se rozhodně nemusíte bát, že „to není pro vás“. V knize jsou ukázky zdrojových kódů uváděny v jazyce Java.
Forma
Nečetl jsem v životě nějaké velké množství knih o programování, ale zatím jsem se s touto formou nesetkal. Kniha je psána jako otázky a odpovědi tázajícímu se čtenáři. Autor a čtenář si tykají a občas se člověk opravdu přistihne, jakoby se ptal sám za sebe. Já jsem si z počátku připadal při čtení nesvůj, ale po pár desítkách stran jsem již tuto zvláštní formu nevnímal. Osobně ale dávám přednost „klasice“.
Text je samozřejmě doprovázen ukázkami zdrojového kódu, které jsou většinou publikovány celé, nebo je čtenář odkázán na doprovodné soubory, které jsou k dispozici na internetu. Veškeré zdrojové kódy používají češtinu (názvy proměnných, metod) a dokonce diakritiku.
Použití češtiny s diakritikou vidím jako jednu ze slabin knihy. Autor oponuje tím, že české termíny si člověk lépe zapamatuje, já tuto argumentaci uznávám, ale považuji ji za naprosto irelevantní. Samotný programovací jazyk je také „anglický“, tak nevím, proč by programátor měl mít problémy s použitím anglických výrazů jako getAvailableColors namísto getZnáméBarvy. Navíc, jak vidíte, název metody je ještě k tomu ošklivou kombinací dvou jazyků. A aby toho ještě nebylo málo, doprovodné příklady, které jsou k dispozici na stránkách ComputerPressu, na tento přístup doplatily. Archív sice obsahuje tři složky, kde jsou zdrojové kódy v různých kódováních, ale ani jedno nemám na mých Windows Vista v pořádku.
Velmi příjemným rysem knihy je její strukturální dělení. Již samotné otázky napomáhají přehlednosti, ale velký kus práce je odveden na důsledném dělení kapitol, titulkování, doplňkových popiscích. Jednotlivé kapitoly odpovídají jednotlivým návrhovým vzorům. Kapitola dále vždy obsahuje text, který vysvětluje účel, principy fungování, možnosti implementace, úskalí, výhody a nevýhody a neposledně také samotný zdrojový kód.
Obsah
Jak již padlo výše, dělení je opravdu propracované. Jednotlivých 33 návrhových vzorů je roztříděno do 7 větších částí. Vzory jsou probírány od těch nejjednodušších po ty nejsložitější. Jednotlivé části jsou:
- Zahřívací kolo – tato část obsahuje vysvětlení základních pojmů a principů objektového programování, najdete zde také lehký úvod primitivních návrhových vzorů,
- Ovlivňujeme počet instancí – v této kapitole, jak již samotný název napovídá, se čtenář seznámí s metodami, jak ovlivnit počet instancí, a samozřejmě k čemu je to vlastně dobré,
- Nekoukej mi do kuchyně – popis vzorů, které nám naši implementaci zapouzdří,
- Optimalizujeme rozhraní – pojem optimalizace snad všichni znají, v této kapitole je tedy důraz na zjednodušení rozhraní tříd za účelem usnadnění práce s třídou,
- Vytvořte to univerzální – tento „všeříkající název“ kapitoly skrývá vysvětlení problematiky práce s instancemi, zaměřuje se na jejich efektivní použití, zapouzdření jejich konstruktorů,
- Zjednodušujeme program – název kapitoly je vcelku výstižný, tyto vzory zjednoduší na první pohled těžké zadání,
- Já se přizpůsobím - poslední kapitola je zaměřena na komplexnější návrhové vzory, které popisují již složitější architekturu, u které je třeba určité nezávislosti jednotlivých komponent.
Kniha ve výše zmíněných kapitolách probere 33 nejpoužívanějších a nejdůležitějších návrhových vzorů, jen pro příklad jmenujme: Factory Method, Singleton, Pool, Iterator, Adapter, Decorator, Bridge, Strategy, Model-View-Controller.
Ukázky z knihy
Závěr a hodnocení
Jak jsem již v úvodu naznačil, návrhové vzory jsou důležitou znalostí zkušeného programátora. Pokud se jím chcete stát, koupí této knihy své znalosti patřičně rozšíříte. Zvláště koupi doporučuji programátorům moderních objektových jazyků, jako je C#, Java, apod. Pokud programujete v jazyku, který nemá exaktní podporu objektů, například téměř všemi používané PHP, pak doporučuji potřebné znalosti načerpat spíše na internetu. Kniha pro vás bude velký kousek, jenž spořádat není vůbec lehké.