Vzorce

(patterns)

Písemný referát pro seminář Praktikum z programování.
Ondřej Bojar


...lidé často znovu vymýšlejí věci, které už někdo popsal...

...někdy jen proto, že cizí popisy myšlenek nevyhovují (jsou příliš obecné nebo naopak příliš konkréntní, příliš nesrozumitelné, vyžadují příliš mnoho dalších znalostí ap.)...

...psaním i čtením odborných popisů tráví lidé hodně času - chtějme tento čas zkrátit...

Vzorce jsou takové odborné dokumenty, jež usnadní autorovi psaní a čtenáři pochopení sdělovaných myšlenek.


1 Úvodní kapitola

1.1 Úvod

Tento referát pojednává o specifickém stylu odborných dokumentů, tzv. vzorcích (patterns). Vzorcem je do určité míry formalizovaný psaný dokument, který v sobě přináší popis častého problému v určitém kontextu nějakého oboru spolu s osvědčeným řešením. Příklady vzorců naleznete v dalším textu.

Referát je určen všem, kteří občas potřebují předat nějaké své zkušenosti a chtějí to učinit způsobem co nejefektivnějším. Forma vzorce je navržena tak, aby byl záznam myšlenek pro autora co nejpohodlnějsí a aby pochopení vzorce bylo pro čtenáře co nejrychlejší a nejsnadnější. Jelikož jsou vzorce poměrně novým způsobem záznamu myšlenek, je jejich forma stále vylepšována a styl jejich psaní se autor od autora liší. Cílem tohoto referátu je představit vám podrobněji jeden styl, který se mně osobně zdá velmi účinný, v příkladech dalších vzorců můžete posoudit styly jiné.

Čím se vzorce liší od obyčejného popisu problému a jeho řešení? Co přinášejí nového?

Dobrý vzorec již v rámci svých Povinných sekcí představuje čtenáři nejen problém a jeho řešení, ale především kontext, v němž bylo řešení navrženo a zvoleno. O důvodech volby daného řešení se čtenář explicitně dozví prostřednictvím Viditelných sil, jež autora řešení ovlivnily. Čtenář tak velmi záhy a snadno najde odpověď na své první otázky: K čemu je to celé dobré? Proč to vypadá právě takto?

Až čtenář (pouhým nahlédnutím do vzorce) zjistí, že ho problém a navrhované řešení zajímá, bude se více zajímat o aspekty zvoleného řešení. Odpovědi na své otázky najde v Rozšiřujících sekcích vzorce. Často se jedná o příklady užití vzorce v praxi, v případě vzorců týkajících se programování může jít o zdrojové texty programů jako ukázka implementace myšlenky vzorce v nějakém konkrétním programovacím jazyce ap.

Velmi podstatnou kvalitou, kterou by vzorce měly vykazovat, je Čitelnost na první pokus. Čtenáři vaše řešení nebudou ani studovat, bude-li to vyžadovat přílišné úsilí hned z počátku. V tomto referátu se dozvíte řadu doporučení, jak vzorce udělat snadno čitelné, s Přeskočitelnými sekcemi a podobně. Při psaní vzorců je ale nutné zároveň zajistit celkovou provázanost vzorce, nepokazit přílišným rozčleněním textu jeho spojitost a plynulost čtení. Vhodného kompromisu lze dosáhnout rozdělením složitého řešení do Souboru vzorců a zajištěním dobré návaznosti mezi příbuznými vzorci.

V tomto textu najdete kromě řady pravidel pro psaní dobrých vzorců i celou řadu příkladů, abyste se mohli nechat inspirovat. Vlastně celý referát je zapsán formou souboru vzorců, po vzoru stránky A Pattern Language for Pattern Writing, z níž do značné míry čerpá. Anglicky mluvící čtenáři na zmíněné stránce naleznou soubor vzorců pro psaní vzorců zároveň napsaný formou vzorců. Jak praví její abstrakt, stránka se snaží shrnout nejlepší dovednosti pro psaní vzorců a zároveň je demonstrovat na dobrém příkladu, stránka sama chce být fungujícím příkladem. Dlužno říci, že je.

Nedílnou částí tohoto referátu budou i odkazy na sbírky hotových vzorců, určených zejména pro obor informatiky a programování.

Není mi známo, že by existoval český dokument pojednávající o vzorcích. Z tohoto důvodu jsem sám musel zavést český překlad vzorec termínu pattern.

1.2. Návod, jak číst tento referát

Čtěte tento referát tak, jak lze číst vzorec každý: hledáte-li odpověď na konkrétní problém, projděte si přiložené tabulky problémů a řešení, až najdete vzorec, který nejspíše na váš problém odpovídá, začněte čtením sekcí jméno, problém a řešení, ostatní sekce jsou Přeskočitelné. Až zjistíte, že vás vzorec patrně zajímá, přečtěte si oddíly kontext a síly, abyste zjistili, jestli je vzorec použitelný ve vaší situaci. Závěrem se podívejte na princip, výsledný kontext nebo příbuzné vzorce a příklady.

Jinou možností je číst celý referát pěkně popořádku, forma vzorce je totiž navržena tak, aby proud čtenářových myšlenek netrhala.

V tomto textu jsou kurzívně vyznačována jména vzorců, tučně pak jejich vnitřní sekce. Přímé hypertextové odkazy na vzorce (způsobující typicky modré a podtržené písmo) jsou záměrně potlačeny, aby nerušily ve čtení. Chcete-li, můžete užít rejstříku na úplném konci tohoto dokumentu.

1.3. Shrnutí referátu

Referát byl pro přehlednost rozdělen do následujících kapitol:

1
Úvodní kapitola
je ta část referátu, kterou právě čtete, obsahuje vysvětlení formy vzorce dosud klasickým způsobem.
2
Vzorce o vzorcích
podrobně vysvětlují myšlenku vzorců (řešení určitého problému v určitém kontextu) a soustav vzorců (rozčleňujících složitý problém na řadu dílčích problémů, jejichž řešení je možné přednést přehledněji).
3
Vzorce o vnitřní struktuře vzorců
vám pomohou rozhodnout, jak formou vzorců napsat vlastní řešení - kdy volit vzorec jediný a kdy dát přednost členění problému do řady vzorců, jak rozčlenit informaci do Povinných sekcí a Rozšiřujících sekcí.
4
Vzorce pro lepší styl
obsahují konkrétní stylistická doporučení, aby byly vaše vzorce srozumitelné, čitelné na první pokus a snadno zapamatovatelné.
5
Příklady vzorců pro programátory
ilustrují, jak lze formu vzorce dobře použít pro představení informatických dovedností. Mimochodem se zde dozvíte, jak psát Snadno srozumitelný kód.
6
Náčrtky externích vzorců
obsahují stručná shrnutí vzorců, jež přesahují rámec tohoto referátu, ale na něž se vzorce v referátu odkazují.
7
Dodatky
obsahují doslov, seznam literatury a odkazů a rovněž rejstřích všech vzorců.

Věřím, že vás forma vzorce zaujme, a že se rovněž pokusíte zapisovat své dovednosti tímto čitelným způsobem.


2 Vzorce o vzorcích

Dva vzorce v této kapitole vysvětlují formu vzorce. Pokud chcete sdělit malé řešení malého problému v určitém kontextu, zapište je formou Vzorce. Větší řešení složitějších problémů bývá užitečné rozdělit do většího Souboru vzorců.

2.1 Vzorec: Vzorec

Kontext:

Jste zkušený odborník ve svém oboru. Postřehl jste, že opakovaně užíváte určité řešení častého problému. Rád byste se o své zkušenosti podělil s ostatními.

Problém:

Jak popsat opakující se řešení určitého problému tak, aby bylo snadno použitelné i pro ostatní?

Síly:

Řešení:

Napište své řešení formou vzorce (pattern). Zachyťte obojí, problém i jeho řešení, současně zdůvodněte, proč je řešení použitelné. Užijte všechny Povinné sekce, abyste zajistili jasné sdělení všech základních informací. Přidejte Rozšiřující sekce s dalšími užitečnými informacemi. Rozšiřte vzorec mezi nejširší publikum, které by jej mohlo využít, aniž by tím byla ohrožena vaše výhoda ve veřejné soutěži. Často to znamená uveřejnění vašeho vzorce výhradně pro interní potřeby vaší společnosti.

2.2 Vzorec: Soubor vzorců

Alternativní názvy: Pattern Language

Kontext:

Pokoušíte se formou vzorce popsat rozsáhlou proceduru nebo složité řešení složitého problému. Některé z popisovaných kroků je třeba uplatnit jen za určitých okolností. Jednotlivé části problému mohou mít podle okolností alternativní řešení. Jeden vzorec neobsáhne celou složitost problému.

Problém:

Jak přehledně popsat řešení, aby bylo současně možné používat jeho různé části za různých okolností?

Síly:

Řešení:

Rozdělte rozsáhlý problém a jeho velké řešení nebo postup na dílčí problémy a odpovídající řešení. Popište zvlášť každou dvojici problém/řešení v samostatném vzorci, jako součást souboru vzorců. Každý vzorec by měl řešit jeden specifický problém. Usilujte o to, aby bylo vzorec možné smysluplně použít i samostatně nebo jen s omezeným počtem dalších vzorců vašeho souboru.

Aby dílčí vzorec získal svou identitu, dejte mu Návodné jméno, jímž se na něj bude možné později odkazovat. Pak popište celkový problém a způsob, jakým na sebe dílčí vzorce navazují, ve Shrnutí souboru vzorců. Jednotlivé vzorce mezi sebou propojte pomocí Čitelných odkazů na vzorce, především v sekcích Kontext a Příbuzné vzorce.

Příbuzné vzorce:

Soubor vzorců by měl být uveden Shrnutím souboru, které popisuje celkový problém a vzorce, jež jej řeší. Shrnutí typu Problém/Řešení je klíčovou částí tohoto úvodu, protože dovoluje vyjímat jednotlivé vzorce ze souboru, zvláště pokud se k materiálu jen odkazujeme. Větší soubory vzorců mají často netriviální strukturu, kterou lze nejlépe zvýraznit užíváním Titulků rozlišujících strukturu. Pokud má jeden problém více alternativních nebo dokonce navzájem se vylučujících řešení, můžete jejich popisy uvést v samostatných vzorcích. V tomto případě pro čtenáře Zvýrazněte společný problém této skupiny vzorců.

Dobrým způsobem, jak propojit vzorce v souboru a jak ujasnit použití souboru vzorců v praxi, je Fungující příklad, který ilustruje použití vzorců na příladu většího problému.

Vzorce popisující tvorbu souboru vzorců přesahují rozsah tohoto referátu, a naleznete je proto jen v podobě náčrtků v kapitole 6.

Příklad:

Samotný tento referát je příkladem souboru vzorců o tom, jak psát vzorce. Představuje řešení jako soubor vzorců, z nichž každý popisuje konkrétní menší problém a jeho řešení.


3 Vzorce o vnitřní struktuře vzorců

Vzorec je popis řešení určitého problému, který se opakuje v určitém kontextu. Této charakteristice však zdánlivě vyhovuje mnoho typů psaných dokumentů. Hlavní výhodou formy vzorce je však schopnost popsat kromě samotného řešení především důvody jeho užívání. Klíčem k tomuto popisu je charakterictiská struktura formy vzorce.

Vzorce v tomto oddílu popisují vnitřní strukturu každého vzorce, ať už je samostatný, nebo součástí Souboru vzorců. Vzorce jsou srozumitelnější, jestliže obsahují všechny Povinné sekce. Rozšiřující sekce dávají autorům vzorců dostatečnou možnost podle potřeby přidat další informace a rozčlenit je co nejpřehledněji.

3.1 Vzorec: Povinné sekce

Alternativní názvy: Mandatory Elements Present, All Elements Present

Problém:

Jak se ujistit, že všechny potřebné informace jsou ve vzorci obsaženy?

Kontext:

Píšete vzorec, ať již samostatný, nebo jakou součást většího souboru vzorců.

Síly:

Čtenáři očekávají, že ve vzorci naleznou určitou informaci. To je to, co odlišuje vzorce od pouhých popisů problémů a řešení.

Řešení:

Zajistěte, aby ve vaše vzorci nechyběla žádná z následujících povinných sekcí. Přesná jména sekcí se v různých stylech psaní a podle oboru použití vzorců různí a pořadí uvedených sekcí není tak důležité, jako skutečnost, že žádná z nich nebyla vynechána. Zvolíte-li jeden styl formy vzorce, snažte se jej dodržet i později.

Jméno vzorce (Pattern Name)
Jméno, jímž se lze na vzorec s popisem problému a řešení odkazovat.

Kontext (Context)
Okolnosti, za nichž je problém řešen, často vyjadřují omezení platnosti řešení. Kontext je často popisován raději úvodem do situace než explicitním vyjádřením. Někdy, zvláště v souboru vzorců, je kontext vzorce popsán seznamem vzorců, které už byly aplikovány.
Kontext zároveň určuje, které z popsaných sil je třeba respektovat více, třeba na úkor ostatních.

Problém (Problem)
Specifický problém, který je třeba řešit. Zvolte takovou formulaci problému, která není ovlivněna kontextem a požadovanými omezeními na řešení.

Síly (Forces)
Seznam často protichůdných tvrzení, která je třeba uvážit při volbě řešení daného problému. Významnost jednotlivých sil (které je třeba podpořit na úkor ostatních) je vyjádřena kontextem vzorce.

Řešení (Solution)
Navrhované řešení daného problému.
Uvědomte si, že většina problémů má více než jedno možné řešení. Úspěšnost (kvalita, "dobrost") řešení je významně ovlivněna kontextem, v němž je problém řešen. Každé řešení zohledňuje určité síly, některým dává přednost před jinými. Některé síly mohou být v řešení i zcela pominuty. Nejlepším řešením je to, které nejlépe vyřeší nejvýznamnější síly, podle pořadí určeného kontextem.
V popisu řešení se čitelně odkazujte na uvedené síly, aby čtenář jasně pochopil, proč bylo zvoleno právě toto řešení.
Více alternativních řešení téhož problému můžete zapsat buď do jediného vzorce, nebo do skupinky vzorců, jež shrnete do Souboru vzorců. V tomto případě Zvýrazněte společný problém těchto vzorců.

Pokud váš text vybízí k podrobnějšímu strukturování základních sekcí svou přílišnou složitostí nebo délkou, zvažte, zda jej nelze raději srozumitelně rozčlenit do Souboru vzorců.

Odůvodnění

Cílem vzorce je obsáhnout nejen popis řešení určitého problému, ale poskytnout čtenáři i průhled do úvah, které předcházely volbě řešení. Povinné sekce vzorce zajišťují, aby byly všechny základní informace předány. V mnoha vzorcích, které byly napsány od prvního vydání knih The Timeless Way of Building [Alexander79] a A Pattern Language [Alexander77], se ukazuje, že tyto Povinné sekce představují minimální soubor informací potřebný ke sdělení určitého vzorce.

Příklady

Všechny vzorce v tomto souboru obsahují Povinné sekce. Tím je zaručeno, že potenciální uživatelé vzorců pochopí, kdy a proč vzorce použít. Sekce vzorců jsou zvýrazněny písmem. Většina vzorců tohoto souboru začítá sekcí problém následovanou popisem kontextu, někdy je tomu naopak.

V různých stylech psaní vzorců se můžete setkat s odlišnými názvy a uspořádáním sekcí. Přehled různých stylů spolu s popisem jejich vlastností lze najít v [Copelien96], v páté kapitole tohoto referátu jsou na příkladech vzorců pro programátory některé odlišné styly vzorců ilustrovány.

Christopher Alexander v knize A Pattern Language užívá tento základní postup: Povinné sekce jsou odděleny typograficky, odstavce řešení začínají slovem "therefore" (a proto). V knize Design Patterns [GHJV95] jsou sekce problém a řešení nahrazeny oddíly záměr a použitelnost a doplněny konkrétnějším příkladem problému v sekci motivace. Sekce řešení je rozvedena ve čtyčech oddílech: struktura, účastníci, spolupráce a implementace.

3.2 Vzorec: Rozšiřující sekce

Alternativní názvy: Optional Elements When Helpful

Kontext:

Píšete vzorec se všemi Povinnými sekcemi, abyste zaručili, že jsou ve vzorci obsaženy všechny nezbytné informace.

Problém:

Jak sdělit důležité informace, které se však nehodí do povinných sekcí?

Síly:

Řešení:

Následující sekce lze do vzorce přidat, pokud to usnadní porozumění vzorci nebo zlepší propojení vzorce s příbuznými vzorci.

Náznak, předzvěst (Indications)
Znaky, které indikují, že problém existuje.

Výsledný kontext (Resulting Context)
Kontext, do něhož se dostaneme po použití řešení. Může obsahovat další nové problémy, které bude třeba řešit. Může být přípravou na použití dalšího vzorce, třeba následujícího vzorce v tomto souboru.

Příbuzné vzorce (Related Patterns)
Přehled vzorců, které by mohly čtenáře rovněž zajímat. Například:

Příklady (Examples)
Konkrétní příklady aplikace tohoto vzorce.

Příklady zdrojových kódů (Code Samples)
V případě vzorce určeného pro programátory ukázkový kód, který ukazuje, jak myšlenku vzorce implementovat v nějakém konkrétním programovacím jazyce.

Odůvodnění (Rationale)
Vysvětlení, které říká, proč je zvolené řešení v daném kontextu tím nejvýhodnějším. Může být rozvitím informace, jež se nevešla do sekce sil.

Alternativní názvy (Aliases)
Další jména, pod nimiž tento vzorec může být znám.

Poděkování (Acknowledgements)
Sluší se poděkovat všem, kteří se významně podíleli na tvorbě tohoto vzorce (nebo souboru vzorců) nebo na návhru technik, které tento vzorec popisuje.

Podle potřeb vašeho oboru lze samozřejmě zavést i další rozšiřující sekce.

Příklady:

V knize Design Patterns je výsledný kontext znám jako důsledky. Příklady lze nalézt v sekci Známá použití a celý problém je představen na konkrétním příkladu v sekci motivace.

Myšlenku předzvěsti zavedl [Cockburn96], který tuto sekci nazývá symptomy. V lékařských popisech onemocnění je tato sekce klíčová.

3.3 Vzorec: Viditelné síly

Alternativní názvy: Visible Forces

Problém:

Vzorec představuje řešení určitého problému v nějakém kontextu. Jak zajistit, aby čtenář pochopil, proč bylo zvoleno právě popisované řešení?

Kontext:

Píšete vzorec nebo soubor vzorců, která má čtenáři přinést jedno určité nebo více možných řešení nějakého problému. Snažít se ve vzorci užít všechny Povinné sekce a v tuto chvíli chcete psát sekci síly.

Síly:

Řešení:

Nehledě na zvolený styl vzorce zajistěte, aby síly byly jasně viditelné. Zdůvodnění, proč řešení vzorce použít je jednou z klíčových kvalit vzorce.

Síly můžete zvýraznit buď pomocí odděleného seznamu nebo zavedením smysluplných "jmen" pro každou sílu. V případě vzorců psaných v podobě souvislého textu užijte zvýraznění pomocí písem, podtržení nebo dalších typografických technik.

Příklady

Tento soubor vzorců užívá pro zápis sil samostatné sekce s vlastním titulkem.

[Foote96] zvýrazňuje síly přímo v souvislém textu popisujícím vzorec.


4 Vzorce pro lepší styl

Vzorec je užitečný, jen pokud je přijat svými čtenáři. Autor vzorce může vynaložit velké úsilí, aby popsal své řešení, všechno toto úsilí však přijde vniveč, pokud čtenář vzorci neporozumí nebo frustrován čtení vzdá. Klíčovou roli pro srozumitelnost vzorce hraje kvalita stylu psaní, tento faktor zde ale nebudeme studovat. V následujících vzorcích popíšeme jiné faktory, některé spíše obecné, některé specifické pro formu vzorce. Uvedené vzorce popisují jevy, jež mají významný vliv na to, jak snadno bude vzorec pochopen.

Vzorce v tomto oddílu jsou použitelné při psaní všech sekcí vzorce nebo souboru vzorců. Jejich cílem je pomoci autorům předat své myšlenky čtenářům vzorců co nejúčinnějším způsobem. Klíčovým krokem je určení Cíleného publika. To pomůže autorům volit Terminologii na míru čtenářů a též Srozumitelné zápisy pro diagramy a ilustrace. Jsou-li mezi čtenáři i programátoři, je na místě přidat Ukázky zdrojových kódů. Zdrojové kódy jako bonus mají navíc výhodu, že je čtenář nemusí číst a pochopit, aby porozuměl celému vzorci.

Při členění svého vzorce usilujte o Čitelnost na první pokus, aby váš čtenář netrpěl tím, že vzorci nerozumí. Mezi osvědčené techniky patří psaní Přeskočitelných sekcí, aby bylo čtenáři hned při prvním čtení jasné, k čemu vzorec slouží, aniž by ho musel celý pochopit.

4.1 Vzorec: Jasné cílené publikum

Alternativní názvy: Clear Target Audience,Target Audience, Identified Audience

Problém:

Váš vzorec může číst mnoho lidí. Jak zajistíte, aby byl vzorec snadno srozumitelný pro zamýšlené publikum?

Kontext:

Píšete vzorec nebo soubor vzorců.

Síly:

Řešení:

Jasně určete cílené publikum, skupinu lidí, jimž chcete své řešení sdělit. Mějte toto publikum na paměti při psaní svého vzorce. Hotový vzorec můžete na nějakém zástupci cíleného publika "otestovat".

Často je užitečné v úvodu vzorce cílené publikum explicitně popsat. Pomůže to případným čtenářům hned na počátku zjistit, zda je vzorec určen právě pro ně. Může to rovněž pomoci určit význam nejednoznačných výrazů v textu, nejsou-li zavedeny v textu nebo popsány v Rejstříku termínů.

Odůvodnění:

Jasné cílené publikum pomáhá zpřesnit vzorec, neboť představuje kritérium pro rozlišení, které informace do vzorce přidat a které vypustit.

Příbuzné vzorce:

Máte-li Jasné cílené publikum, můžete užívat Terminologii na míru čtenářů.

Příklad:

V tomto souboru vzorců je cílené publikum uvedeno hned v druhém odstavci úvodu.

4.2 Vzorec: Terminologie na míru čtenářům

Alternativní názvy: Terminology Tailored to Audience

Problém:

Jak maximálně zvýšit pravděpodobnost, že čtenář vašemu vzorci správně porozumí?

Kontext:

Píšete vzorec nebo soubor vzorců a máte určeno Jasné cílené publikum.

Síly:

Řešení:

Používejte terminologii na míru čtenářům. Používejte jen takové termíny, jimž typický člen publika pohodlně bez problémů porozumí. Ověřte si srozumitelnost terminologie na zástupci cíleného publika. V úvodu vzorce nezapomeňte uvést odkaz na zdroj užívaných termínů.

Abyste zajistili, že zbytečně neomezujete případné publikum, užívejte co nejjednodušší jazyk, jímž můžete efektivně předat myšlenky. Přiložte rejstřík méně obvyklých termínů. Nové termíny vysvětlete v poznámkách pod čarou (nebo čtenáře odkažte na Rejstřík termínů).

Výsledný kontext:

Vzorec nebo soubor vzorců nemusí být dost dobře srozumitelný čtenářům mimo cílené publikum, je-li terminologie příliš specializovaná.

Odůvodnění:

Vzorec, který je srozumitelný pro cílené publikum, bude spíš užitečný.

Příklad:

Tento vzorec použivá terminologii běžnou pro autory vzorců. Nevysvětluje termíny jako Síly, Kontext, protože cílené publikum je s jejich významem seznámeno a podrobné definice by mu byly spíše na obtíž.

4.3 Vzorec: Srozumitelné zápisy

Alternativní názvy: Understood Notations

Kontext:

Píšete vzorec a pokoušíte se nějakou část myšlenky sdělit pomocí diagramu nebo ilustrace. Máte Jasné cílené publikum.

Problém:

Jak zajistit, aby byly diagramy snadno pochopitelné pro celé vaše cílené publikum?

Síly:

Řešení:

Užívejte v diagramech takové formy zápisu, které jsou pro cílené publikum pravděpodobně srozumitelné. Takové notace by měly být široce užívané a snadno pochopitelné. Pokud používáte standardní notaci, uvádějte vždy odkaz na příslušný standard. Pokud je naopak nebezpečí, že čtenáři váš nestandardní zápis nepochopí, přidejte jasný a stručný popis své notace v místě prvního použití nebo podrobněji v dodatku.

Odůvodnění:

Čím známější notaci užíváte, tím spíše čtenáři vaše diagramy pochopí i bez dodatečného (a rušivého) vysvětlení. Stručná vysvětlení méně obvyklých notací pomohou neznalým čtenářům porozumět vašim diagramům, v lepším případě aniž by je příliš odtahovala od jádra vašeho vzorce. Odkazy na standarní formy zápisu představují pro zvídavé čtenáře cestu, jak se dozvědět více.

Příbuzné vzorce:

Pokud je vysvětlení notace součástí vašeho vzorce nebo souboru vzorců, zajistěte, aby bylo uvedeno v Přeskočitelné sekci.

4.4 Vzorec: Čitelnost na první pokus

Alternativní názvy: Single-Pass Readable

Problém:

Člověk hledající řešení nějakého problému často potřebuje prostudovat celou řadu možných řešení. Jak pomůžete čtenáři vašeho vzorce, aby vzorci porozuměl v co nejkratším čase a usnadnil si tak hledání vhodného řešení?

Kontext:

Píšete vzorec se všemi Povinnými sekcemi.

Síly:

Řešení

Dosáhnout Čitelnosti na první pokus je velmi obtížný úkol, který by si pravděpodobně zasloužil samostatný soubor vzorců. Přesto lze uvést alespoň několik technik, jež mohou napomoci k vytvoření vzorce čitelného na první pokus.

Odůvodnění:

Abyste se čtenáři vašeho vzorce dozvědět vše co potřebují v co nejkratším čase, musíte jim pomoci číst jen sekce, které potřebují, a jen jedenkrát. Přeskočitelné sekce a Nalezitelné sekce pomohou čtenářům najít sekce, které potřebují. Techniky popsané výše omezují nutnost se při čtení vracet (nebo nahlížet dopředu) a číst sekci vícekrát.

Příbuzné vzorce:

4.5 Vzorec: Přeskočitelné sekce

Alternativní názvy: Skippable Sections

Kontext:

Píšete vzorec, který má být součástí většího celku a k němuž se bude odkazovat. Váš vzorec má všechny Povinné sekce a potřebné Rozšiřující sekce. Usilujete o vzorec snadno srozumitelný, Čitelný na první pokus.

Problém:

Jak čtenářům zjednodušit pochopení podstaty vzorce a přitom ve vzorci poskytnout dostatek informací nutných pro použití vzorce?

Síly:

Řešení:

Jasně vyznačte oddíly Problém, Kontext a Řešení, aby čtenář mohl rychle rozhodnout, jestli je pro něj vzorec použitelný. Podrobnější informace (například síly nebo ukázky zdrojových kódů) přidejte v jasně odlišených sekcích, které může čtenář přeskočit, pokud se nezajímá o detaily.

Odůvodnění:

Čtenář, který se snaží seznámit se s větším počtem vzorců, chce velmi rychle provést základní výběr. Příliš mnoho informací je mu zpočátku na obtíž. Většina informací uvedených ve vzorci je potřebná až v případě, že jste se rozhodli vzorec použít (nebo vybíráte už z velmi omezeného počtu vzorců). Tento vzorec představuje způsob, jak popsat podstatu vašeho vzorce bez zabíhání do zbytečných podrobností, a tedy usnadňuje čtenáři rychlý výběr vhodného vzorce.

Výsledný kontext:

Nejsou-li Přeskočitelné sekce uvedeny až na konci dokumentu, může čtenář potřebovat hledat ve vzorci další sekci, která ho zajímá. Usnadněte mu to pomocí Nalezitelných sekcí.

Příbuzné vzorce

Vzorec Ukázky zdrojových kódů jako bonus představuje speciální případ přeskočitelných sekcí. Vzorec Rozšiřující sekce radí, kdy uvést ve vzorci nějakou sekci, kdežto vzorec Přeskočitelné sekce se snaží umožnit čtenáři efektivnější čtení.

Příklady:

"Alexandrijský" styl vzorce používá odlišná písma a znak *** pro oddělení odstavců, aby čtenář mohl snadno nalézt problém a navrhované řešení. Strukturovanější styly vzorců (např. styl tohoto souboru) užívají titulky pro oddělení jednotlivých sekcí. V úvodu k tomuto souboru vzorců je vysvětleno, kterých sekcí si má čtenář všímat pro "rychlé čtení".

V knize Design Patterns [GHJV95] mají vzorce sekci Použitelnost (Applicability), která umožňuje celý zbytek vzorce přeskočit, pokud dosud hledáme řešení určitého problému.

4.6 Vzorec: Nalezitelné sekce

Alternativní názvy: Findable Sections

Kontext:

Píšete vzorec v rámci většího celku a hodláte se k němu odkazovat. Váš vzorec obsahuje všechny Povinné sekce a potřebné Rozšiřující sekce, pro snazší čtení jsou některé sekce Přeskočitelné. Usilujete o vzorec snadno srozumitelný, Čitelný na první pokus a použitelný jako referenční materiál.

Problém:

Jak usnadnit nalezení klíčových prvků vzorce, především sekcí Problém, Kontext, Síly a Řešení?

Síly:

Řešení:

S ohledem na styl vašeho vzorce zvažte, které sekce čtenář potřebuje při vyhledávání, pokud se ke vzorci odkazuje. Začátky těchto sekcí výrazně označte, aby je čtenář snadno našel. Můžete to udělat použitím titulků, typograficky (použitím písem, podtržení ap.) nebo graficky (vložením diagramů, grafických prvků, hvězdiček mezi sekce).

Počátek vzorce je speciální případ Nalezitelné sekce. Pro usnadnění nalezení počátku vzorce lze užít stínované titulky, návodné ilustrace (tj. zavedené grafické symboly nebo obrázky) nebo začínat každý vzorec na nové stránce.

Odůvodnění:

Sekce nemůže být považována za dobře přeskočitelnou, pokud následující podstatnou sekci nelze nalézt bez čtení nebo pročítání přeskakované sekce. Čím jsou hranice sekcí výraznější, tím snadněji lze sekce přeskakovat.

Příbuzné vzorce:

Přeskočitelné sekce pomohou čtenáři číst vzorec efektivně, tento vzorec pak zlepšuje použitelnost vzorce jako referenčního materiálu, materiálu, k němuž se odkazujeme.

Příklady:

"Alexandrijský" styl vzorce používá odlišná písma a znak *** pro oddělení odstavců, aby čtenář mohl snadno nalézt problém a navrhované řešení. Strukturovanější styly vzorců (např. styl tohoto souboru) užívají titulky pro oddělení jednotlivých sekcí. V některých souborech vzorců je možné nacházet klíčové sekce všech vzorců pouhým obracením stránek. Je toho dosaženo tím, že všechny vzorce začínají na nové stránce a všechny sekce vzorců začínají zhruba na stejném místě stránky.

[Foote96] pro zvýraznění začátku vzorců účinně používá stínované titulky a návodné ilustrace.

4.7 Vzorec: Ukázky zdrojových kódů

Alternativní názvy: Code Samples, Code Examples

Kontext:

Popisujete řešení nějakého problému v softwarovém návrhu. Máte určené Jasné cílené publikum, jež zahrnuje významné množství softwarových návrhářů nebo programátorů.

Problém:

Jak napsat vzorec tak, aby dostatečně jasně a jednoznačně umožňoval přímočarou implementaci navrhovaného řešení?

Síly:

Řešení:

Přidejte do vzorce jeden nebo více příkladů implementace daného návrhu. Zvolte programovací jazyk, který bude pravděpodobně srozumitelný pro vaše cílené publikum. Zvolte takový způsob implementace, který jasně a přímočaře demonstruje podstatu vzorce a zároveň maximálně omezuje nadbytečné nebo rušivé detaily. Zajistěte, aby všechny příklady kódů byly dobře komentovány a aby všechny předpoklady a učiněná rozhodnutí byly v textu explicitně uvedeny. Rozlište, které rysy vašeho příkladu jsou podstatné z hlediska návrhu popisovaného ve vzorci a které jsou podružné. Zajistěte, aby vaše příklady kódů byly doslova schopné běhu (tj. především kompletní a bez syntaktických chyb). Syntaktické chyby v příkladech kódů mohou být pro čtenáře stejně rušivé jako pro překladače.

Odůvodnění:

Dobře komentovaný příklad kódu je formálním, precizním a jednoznačným zápisem softwarového návrhu. Zkušení programátoři tomuto zápisu navíc dobře rozumí. Pro všechny čtenáře je pak zdrojový kód potvrzením, že správně pochopili klíčové myšlenky vašeho vzorce.

Příklad:

Všechny vzorce uvedené v knize Design Patterns [GHJV95] obsahují Ukázky zdrojových kódů, což je přirozené, neboť je kniha určena pro programátory.

Příbuzné vzorce:

Ukázky zdrojových kódů jako bonus zajišťují, aby byl vzorec srozumitelný i bez čtení těchto kódů. Navíc mohou pomoci omezit rušivý vliv příkladů kódu na souvislost textu.

4.7.1 Vzorec: Ukázky zdrojových kódů jako bonus

Alternativní názvy: Code Samples as Bonus, Code Examples as Bonus

Problém:

Jak zajistit, aby podstata vašeho softwarového návrhu popsaného vzorcem byla srozumitelná pro všechny čtenáře z cíleného publika, bez ohledu na to, zda znají určitý programovací jazyk?

Kontext:

Píšete vzorec softwarového návrhu nebo návrhu architektury a připojujete k němu Ukázky zdrojových kódů.

Síly:

Řešení:

Zajistěte, aby byl vzorec dostatečně samostatný, dokázal předat podstatné části návrhu i kdyby byly ukázky zdrojových kódů odstraněny. Ukázky kódů připojujte jako bonus, který může pomoci čtenářům ověřit, že návrh pochopili, a představuje pro ně vodítko, jak návrh nejsnáze implementovat. Ujistěte se, že jsou ukázky kódů dobře začleněny do textu a mohou být snadno přeskočeny, nebo že jsou uvedeny v samostatné Přeskočitelné sekci.

Popisy významných algoritmů a klíčových vztahů mezi objekty by měly být uvedeny v jiné formě zápisu než v nějakém programovacím jazyce. Mezi použitelné formy zápisu lze řadit pseudokód, vývojové diagramy, záznamy o chodu událostí, popisy objektového modelu a vztahů mezi objekty. Ať zvolíte kteroukoli formu zápisu, pište Srozumitelné zápisy; netvořte vlastní formy zápisu a neužívejte málo známé formy, pokud to není naprosto nevyhnutelné.

Odůvodnění:

Účelem vzorce je předat informace co nejširšímu možnému publiku. Pokud vzorec nebude zcela srozumitelný i bez čtení zdrojových kódů, čtenáři, kteří neznají zvolený programovací jazyk vzorci neporozumí.

Příklad kódu:

(citace z originálu uvedeného na stránce A Pattern Language for Pattern Writing)
Reader >> understandsSmalltalk

"Answers True if the reader understands Smalltalk, otherwise signals an exception"

self understands: #Smalltalk

ifTrue: [^True]

ifFalse: [self doesNotUnderstand].


5 Příklady vzorců pro programátory

V této kapitole najdete několik příkladů vzorců a "protivzorců" pro programátory. Protivzorce (Anti Patterns) jsou vzorce popisující cesty od problémů ke špatným řešením a výjimečně též vzorce popisující cesty od špatných řešení k dobrým řešením. Formálně se od běžných vzorců nijak výrazně neliší, snad jen vyjma důrazného varování: "Tudy ne!". Uvedené příklady vzorců pocházejí od různých autorů, a proto zároveň dobře ilustrují různé styly psaní vzorců.

Kromě vzorce jak psát Snadno srozumitelný kód se dozvíte, proč a jak se snažit vyhnout Brotnosauřím projektům a proč netrávit čas Navrhováním kuchyňského dřezu.

Bezprostředně za každým vzorcem následuje seznam odkazů na původní vzorec, sbírku vzorců na daném serveru a všechny další vzorce, na něž se tento odkazuje.

5.1 Vzorec: Snadno srozumitelný kód (Simply Understood Code)

...na nejnižších úrovních programu jsou úseky kódu. Jsou to místa, jimž je nutné dobře rozumět, aby bylo možné měnit program, a podobně úplné porozumění programu vyžaduje porozumění těmto úsekům kódu.

* * *

V mnoha částech kódu je problém dezorientace velmi palčivý. Lidé nemají nejmenší tušení, k čemu která část složka kódu slouží, a zažívají proto významný duševní stres.

Představte si, že píšete část kódu, která není tak složitá, že by vyžadovala rozsáhlou dokumentaci, nebo není z hlediska účelu celého programu tak podstatná, aby její dokumentace stála za námahu, zvlášť, když kód je sám o sobě dostatečně srozumitelný. Jak můžete napsat takový kód?

Lidé potřebují na napsaný kód zírat, aby jej pochopili a získali dostatek sebedůvěry pro měnění kódu. Pokud musí trávit čas přecházením z okna do okna, listováním nahoru a dolů, aby našli příslušné části kódu, je zbytečně rozptylována jejich pozornost od pochopení smyslu kódu a získání sebedůvěry pro jeho změnu.

Lidé při čtení lépe porozumí věcem, jež jsou napsány v přirozeném směru čtení; v případě naší kultury je to obecně zleva doprava a shora dolů.

Jestliže kód není spolehlivě srozumitelný, bude omylem při změně poškozen.

Proto, uspořádejte významné části kódu tak, aby se vešly na jednu stránku. Napište kód srozumitelný pro člověka, který jej čte shora dolů. Nevynucujte opakované nahlížení do kódu pro to, aby čtenář pochopil, jak jsou užívány datové struktury a jak je v kódu předáváno řízení.

* * *

Tohoto vzorce lze dosáhnout pomocí následujících vzorců: Lokální proměnné definovány a použity na jedné stránce, usiluje o udržení všech lokálních proměnných na jedné stránce; Nastavte proměnné jedenkrát, usiluje o zmenšení nutnosti prohledávat opakovaně kód pomocí toho, že je hodnota proměnných měněna jen jednou; Lokální proměnné nastaveny znovu před dalším použitím, což učiní hodnotu proměnné zjevnou pro čtenáře, který čte kód shora dolů; Udělejte smyčky zjevné, což pomůže lidem porozumět i částem kódu, jež nejsou lineární, i při zachování lineárního čtení kódu; a používejte Funkce pro smyčky, což zabalí složité struktury opakovaní s několika stavovými proměnnými do úseků, z nichž je každý snadno srozumitelný.

-- Richard Gabriel

Odkazy

5.2 Protivzorec: Brontosaurus (Creeping Featuritis)

Problém: Chcete uspokojit zákazníky. Chcete vyrobit nejlepší možný produkt a získat tak pro sebe slávu a uznání.

Síly: Programátoři mají velká ega. Zákazníci často nevědí, co chtějí. Programátoři často nechápou rozdíl mezi tím, co je nutné a co je "skvělé".

Řešení: Svoláte všechny programátory a návrháře do velké místnosti (jako v Návrhu podle výboru) a každý k produktu připojí, co chce. Tento proces rychle vyvolá zpětnou vazbu a každý začne přidávat další a další náměty.

Diskuse: Brontosaurovatění produktu může začít nebo pokračovat v kterékoli jeho fázi vývoje. Nejčastěji k němu dochází během analýzy, výsledkem je nekončící fáze analýzy (viz AnalysisParalysis) nebo nerealisticky ambiciózní specifikace. Ve fázi návrhu se vyznačuje přidáváním více zvonečků a píšťalek, než analýza vyžadovala, nebo pokusem o abstrakci úplně všeho dříve, než bylo cokoli konkretizováno. Ve fázi programování se vyznačuje kódováním, jež nikdy nekončí, neboť programátoři nepřestávají přidávat "ještě jednu vymoženost".

-- Kyle Brown s inspirací od Jima Copliena

Odkazy


6 Náčrtky externích vzorců

V této kapitole naleznete stručná shrnutí vzorců, jež přesahují rámec tohoto referátu, ale na něž se vzorce v referátu odkazují. Všechny vzorce pocházejí ze stránky A Pattern Language for Pattern Writing.

Čitelné odkazy na vzorce (Readable References to Patterns)
Problém: Jak se z textu vzorce odkazovat na jiné vzorce?
Řešení: Jméno vzorce, na který se odkazujete, včleňte přímo do textu věty a odlište jej pouze typograficky, aby odkaz co nejméně rušil souvislost výkladu a zároveň umožňoval nalezení celého vzorce.
Fungující příklad
Problém: Jak čtenáři usnadnit použití souboru vzorců v praxi?
Řešení: Pokuste se ve všech vzorcích souboru užívat tentýž příklad, který můžete předem uvést v úvodu k souboru. Na tomto příkladu ukazujte, jak jednotlivé vzorce souboru přispívají ke společnému řešení. Pokud pro některé vzorce tento společný příklad k úplnému dokreslení myšlenky vzorce nestačí, uveďte u nich dodatečné příklady.
Náčrtky vzorců (Pattern Thumbnails)
Problém: Jak odkazovat na jiné vzorce stručným, ale smysluplným způsobem a tak, aby byl čtenář co nejméně rušen.
Řešení: V textu použijte Návodné jméno vzorce a u prvního výskytu přidejte poznámku s odkazem na zdroj a se stručným shrnutím ("náčrtkem") vzorce v jedné nebo dvou větách, aby čtenář nemusel pro základní pochopení vzorec vyhledávat.
Návodná jména vzorců (Evocative Pattern Name)
Problém: Jak pojmenovat vzorec, aby byl snadno zapamatovatelný a snadno se na něj odkazovalo?
Řešení: Zvolte takové jméno, jež koresponduje s řešením popisovaného vzorce. Dejte přednost delšímu označení, které bude dávat smysl nejen autorovi, ale bude snadno zapamatovatelné a srozumitelné i pro čtenáře. Zvolené jméno na lidech "otestujte" - ať zkusí jen podle jména uhodnout, co sám vzorec říká.
Rejstřík termínů (Glossary)
Problém: Jak čtenáři vzorce nebo souboru vzorců osvětlit potřebnou terminologii a nenarušit přitom souvislost textu vzorce?
Řešení: Ke vzorci nebo souboru vzorců připojte samostatný rejstřík termínů, v němž uvedete potřebné termíny a jejich definice. Považujete-li to za nutné nebo užitečné, můžete definice termínů uvádět navíc i v poznámkách pod čarou.
Shrnutí souboru vzorců (Pattern Language Summary)
Problém: Jak čtenáři sdělit přehled o větším souboru vzorců?
Řešení: Napište před soubor vzorců jeho shrnutí, které vysvětluje, jak je větší problém rozčleněn na problémy dílčí a jak tyto dílčí problémy jednotlivé vzorce řeší. Soubor vzorců můžete též představit pomocí Fungujícího příkladu.
Shrnutí typu Problém/Řešení (Problem/Solution Summary)
Problém: Jak čtenáři ulehčit vyhledání jednotlivých vzorců ze souboru vzorců?
Řešení: K souboru vzorců připojte přehled všech vzorců v podobě tabulky shrnující všechny popisované problémy a odpovídající řešení.
Titulky rozlišující strukturu ((Distinctive) Headings Convey Structure)
Problém: Jak čtenáři osvětlíte umístění konkrétního vzorce, který právě čte, ve struktuře celého souboru vzorců?
Řešení: Odlište titulky vzorců od všech ostatních nadpisů částí dokumentu. Číslujte vzorce hierarchicky podle struktury vašeho souboru vzorců.
Zvýrazněný společný problém (Common Problems Highlighted)
Problém: Jak čtenáři souboru vzorců upozornit, že určitý problém má více alternativních řešení popsaných v samostatných vzorcích?
Řešení: Pokud několik vzorců řeší tentýž problém, upozorněte na to čtenáře. Můžete společný problém vzorců popsat v samostatném popisu problému nebo na popis problému ze všech vzorců pouze odkazovat (v rámci oddílu příbuzné vzorce). Pokud znění problému uvedete u všech vzorců, měli byste čtenáře upozornit, že se problémy ve vzorcích opakují.


7 Dodatky

7.1 Doslov

Doufám, že i tento letmý pohled do problematiky vzorců stačil vzbudit váš zájem. Jako začínající odborník bych se totiž rád již v blízké budoucnosti stále častěji setkával s odbornými texty, jež jsou pohodlně čitelné a snadno srozumitelné, a proto doufám, že vám tento hrubý návod psaní takových dokumentů usnadní.

Závěrem musím poznamenat, že v tomto referátu nenajdete zdaleka všechny vzorce, jež se k problematice vzorců váží. Můžete proto využít seznamu literatury a odkazů k získání dalších znalostí, na většině stránek však naleznete kromě podrobných a kvalitních rad i omluvu, že ještě mnoho práce zbývá... ...možná některá právě pro vás...

7.2 Literatura a odkazy

Zdroje na internetu

Tištěné publikace

[Alexander77]
Christopher Alexander et al., A Pattern Language, Oxford University Press, New York, 1977.
[Alexander79]
Christopher Alexander, The Timeless Way of Building, Oxford University Press, New York, 1979.
[Cockburn96]
Alistair Cockburn, "A Medical Catalog of Project Management Patterns", PLoP'96 Proceedings.
[Copelien96]
Jim Coplien, "A White Paper on Patterns", SIGS books, 1996
[Foote96]
Brian Foote and Joseph Yoder, "Attracting Reuse", PLoP'96 Proceedings.
[GHJV95]
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides "Design Patterns: Elements of Reusable Object-Oriented Software." Addison-Wesley. ISBN 0-201-63361-2.

7.3 Tabulky problémů a řešení

Forma vzorce
Problém Řešení Vzorec
Jak popsat opakující se řešení určitého problému tak, aby bylo snadno použitelné i pro ostatní? Napište své řešení formou vzorce (pattern). Vzorec
Jak přehledně popsat řešení, aby bylo současně možné používat jeho různé části za různých okolností? Rozdělte rozsáhlý problém a jeho velké řešení nebo postup na dílčí problémy a odpovídající řešení. Tyto vzorce shrňte do Souboru vzorců Soubor vzorců
Dobré strukturování vzorců
Problém Řešení Vzorec
Jak se ujistit, že všechny potřebné informace jsou ve vzorci obsaženy? Zajistěte, aby ve vaše vzorci nechyběla žádná z uvedených povinných sekcí. Povinné sekce
Jak sdělit důležité informace, které se však nehodí do povinných sekcí? Do vzorce lze přidat uvedené i další rozšiřující sekce. Rozšiřující sekce
Jak zajistit, aby čtenář pochopil, proč bylo zvoleno právě popisované řešení? Nehledě na zvolený styl vzorce zajistěte, aby síly byly jasně viditelné. Viditelné síly
Dosažení lepší čitelnosti a srozumitelnosti
Problém Řešení Vzorec
Jak zajistíte, aby byl vzorec snadno srozumitelný pro zamýšlené publikum? Jasně určete cílené publikum, skupinu lidí, jimž chcete své řešení sdělit. Mějte toto publikum na paměti při psaní svého vzorce. Jasné cílené publikum
Jak maximálně zvýšit pravděpodobnost, že čtenář vašemu vzorci správně porozumí? Používejte jen takové termíny, jimž typický člen publika pohodlně bez problémů porozumí. Ověřte si srozumitelnost terminologie na zástupci cíleného publika. Terminologie na míru čtenářům
Jak zajistit, aby byly diagramy snadno pochopitelné pro celé vaše cílené publikum? Užívejte v diagramech takové formy zápisu, které jsou pro cílené publikum pravděpodobně srozumitelné. Srozumitelné zápisy
Jak pomůžete čtenáři vašeho vzorce, aby vzorci porozuměl v co nejkratším čase a usnadnil si tak hledání vhodného řešení? Usilujte o Čitelnost na první pokus. Je to velmi obtížný úkol, ale lze uvést alespoň několik technik, jež vám mohou pomoci. Čitelnost na první pokus
Jak čtenářům zjednodušit pochopení podstaty vzorce a přitom ve vzorci poskytnout dostatek informací nutných pro použití vzorce? Jasně vyznačte oddíly Problém, Kontext a Řešení, podrobnější informace (například síly nebo ukázky zdrojových kódů) přidejte v jasně odlišených sekcích. Přeskočitelné sekce
Jak usnadnit nalezení klíčových prvků vzorce, především sekcí Problém, Kontext, Síly a Řešení? S ohledem na styl vašeho vzorce zvažte, které sekce čtenář potřebuje při vyhledávání, pokud se ke vzorci odkazuje. Začátky těchto sekcí výrazně označte. Nalezitelné sekce
Jak napsat vzorec tak, aby dostatečně jasně a jednoznačně umožňoval přímočarou implementaci navrhovaného softwarového řešení? Přidejte do vzorce jeden nebo více příkladů implementace daného návrhu. Ukázky zdrojových kódů
Jak zajistit, aby podstata vašeho softwarového návrhu popsaného vzorcem byla srozumitelná pro všechny čtenáře z cíleného publika, bez ohledu na to, zda znají určitý programovací jazyk? Zajistěte, aby byl vzorec dostatečně samostatný, dokázal předat podstatné části návrhu i kdyby byly ukázky zdrojových kódů odstraněny. Ukázky zdrojových kódů jako bonus

7.4 Rejstřík vzorců

Cílené publikum
Čitelnost na první pokus
Čitelné odkazy na vzorce
Fungující příklad
Jasné cílené publikum
Náčrtky vzorců
Nalezitelné sekce
Návodná jména vzorců
Povinné sekce
Přeskočitelné sekce
Rejstřík termínů
Rozšiřující sekce
Shrnutí souboru vzorců
Shrnutí typu Problém/Řešení
Snadno srozumitelný kód
Soubor vzorců
Srozumitelné zápisy pro diagramy a ilustrace
Terminologie na míru čtenářům
Titulky rozlišující strukturu
Ukázky zdrojových kódů
Ukázky zdrojových kódů jako bonus
Viditelné síly
Vzorec
Zdrojové kódy jako bonus
Zvýrazněný společný problém


Ondřej Bojar, obo@cuni.cz
http://www.cuni.cz/~obo
8.9.1999