% $Id: vyvoj.tex,v 1.1 2007/01/18 22:20:30 jarda Exp $

Strukturování kódu, jeho dokumentace, správa zdrojových kódů, to jsou aspekty,
které výrazně ovlivňují udržovatelnost kódu projektu; proto se v této kapitolce
o těchto tématech krátce zmíním.

\section{Strukturování a pojmenování kódu}

Z praxe vím, že pro programátora, který má prohlížet a upravovat cizí kód, ale
i pro samotného autora, zvláště po delší době od vytvoření, je důležité, aby
ze samotné struktury zdrojových kódů a názvů jednotlivých částí kódu získal co nejrychleji
přehled o funkci jednotlivých částí a jejich vzájemných vztazích. Důležité je, aby
kód působil jednotně, takže může programátor z modulů, tříd a funkcí, které již zná, usuzovat
na chování modulů, tříd a funkcí, které jsou názvem či funkčností příbuzné.

Ve své práci jsem se snažil členit kód do samostatných modulů, nejlépe podle jednotlivých
tříd. Více tříd v jednom modulu jsem použil pouze v případě, že třídy byly malé a logicky
patřily k sobě. Názvy modulů, tříd a proměnných jsem se snažil udržet v jednotné podobě.
Příkladem mohou být PHP stránky, které, až na pár důvodných výjimek, pojmenovávám jednotným stylem
(\textit{typdat\_druhakce.php}), jednotné pojmenování třídy vytvářející stránku (PageClass) nebo
v řádkovém analyzátoru pojmenování modulů {BenchmarkFileParser\_formát.py}.


\section{Dokumentace kódu}

Zatímco mnohé je možné zjistit ze samotných názvů tříd, modulů, funkcí, proměnných apod.,
jsou-li dobře navrženy, je více než vhodné v komentáři popsat funkci modulu, třídy, funkce
nebo menší části kódu. Tuto zásadu jsem se snažil dodržet ve všech zdrojových kódech
aplikační části.

\section{Správa zdrojových kódů}

{\odstavec

Existují různé strategie ukládání, zálohování a sdílení souborů. Soubory se dají ukládat
na jednom místě na serveru, rozesílat mezi vývojáři apod. Různá naivní a ad hoc řešení se 
ukazují jako příliš slabá a existuje mnoho softwarových balíků, které umožňují efektivně
sdílet kód mezi vývojáři projektu, spravovat několik různých větví, získávat přehled o změnách
a podobně. Ze zkušeností z praxe mohu říci, že pro práci v malých týmech lze s úspěchem použít
systém CVS, který vychází z RCS. Na projektu jsem pracoval sám, ale i pro samostatného vývojáře
poskytuje software pro správu zdrojových kódů (anglicky SCM - Source Code Management) několik
výhod, které se pokusím popsat zde na mnou zvoleném systému CVS.

Časté ukládání verzí do SCM systému (anglicky se tato operace nazývá commit) umožňují vývojářům 
sledovat historii změn. Ke každému uložení se přidává popis změn. Je tedy možné sledovat, kdo,
kdy a jaké změny provedl a v ideálním případě i rozumný popis těchto změn.

Před posláním verze do systému se vývojář může podívat, co skutečně změnil a naposled se zamyslet,
zda něco neopomenul, nedopustil se omylem nějakého překlepu apod.

Do každého zdrojového souboru je možné vložit makro, které při ukládání aktualizuje informaci
o změně - vloží číslo verze, jméno autora změny a čas změny. V systému CVS se používá makro 
\${}Id:{}. Příklad vložené informace:

\textit{\# \${}Id: benchmarkSets\_LISTING.php,v 1.4 2006/12/13 00:12:55 jarda Exp \${}}

Přestože nemohu předat s programem celý repozitář CVS, považuji za vhodné, aby případný
další správce kódu zařadil projekt do vlastního CVS nebo jiného SCM systému.

}

% vim:enc=iso8859-2:fenc=iso8859-2:syntax=tex:
