Nová verze tohoto webu se nachází na www.tutorialy.com

homeforumTutorialy.com
 
Reklama
Programujeme objektově v PHP – díl druhý
Programujeme objektově v PHP – díl druhý
Programujeme objektově v PHP – díl druhý
V tomto díle vám chci říct a ukázat par rad a triků jak správně programovat, čeho se držet a naopak čeho se vyvarovat, aby váš kód byl jak kvalitní tak i hezký.
Autor: Neuronic | Kategorie: Tvorba webu > PHP | Zhlédnuto: 3638x |
Hodnocení: 1.4 | Komentáře (8) | Obtížnost: Pokročilý | Vloženo: 12.1.2007

Jaké zvolit vývojové prostředí?

Klíčové vlastnosti vývojového prostředí:

  • Zvýraznění syntaxe – zajistí větší přehlednost kódu. Graficky oddělí syntaxe pro různé programovací jazyky, proměnné od funkcí, funkce od cyklů apod.
  • Debugování – umožňuje vám rychleji nalézt chybu v kódu. Např. procházení řadku po řádku, nebo vytvoření tzv. „breakpointu“, kde se vám aplikace zastaví a vy se můžete podívat na aktuální stav proměnných nebo rozhodovacích funkcí.
  • Intelli Sense – velmi užitečná věc při programování, píšete kód a vývojové prostřední vám nabízí různé možnosti výběru fukncí, proměnných anebo automatické doplnění zbývajícího nebo chybného kódu.

Free verze:

Komerční:

Osobně používám eclipse hned z několika důvodů. Je to freeware, jeho potenciál je obrovský, možnost využií téměř (ne-li) pro všechny programovací jazyky, jednoduchost, velká podpora, příjemné uživatelské rozhraní, možnost přidání plug-inů a mnoho dalších. Jediná nevýhoda eclipsu je snad jenom jeho velikost a možná větší složitost pro začátečníky. Lepším vývojovým programem je Zend studio, ale za něj si musíte připlatit nemalou částku ?.

Pište komentáře!

Mnoho vývojářu podceňuje psaní komentářů a to je ohromná chyba! Komentáře jsou jediným vodítkem ve vašem programování. Ze začátku si říkate proč mám psát komentáře, když vím, na co je tahle funkce, k čemu slouží tahle proměnná a jaký je návratový typ funkce. To je sice hezké, že to víte, jenomže jak se vám bude projekt zvětšovat, bude se vám zvětšovat i obsah proměnných a funkcí a už nebudete vědět k čemu co slouží. Komentáře taky slouží druhým osobám, aby věděli co tím autor myslel.

/**
 * get number of all rows in table
 * @return Integer
 */

Tento tvar využijeme u funkcí, které nám něco vracejí. Například Integer, String, Char, Boolean nebo určitý objekt třeba Ctverec. Když budeme později volat tuto funkci s komentářem napsaným tímto způsobem, objeví se nam krátky popis funkce „get number of all rows in table“ a její návratový typ, v našem případě „Integer“. Takže budeme vědět co dotyčná funkce dělá a co nám popřípadně vrací.

/**
 * set name of the Author
 * @param String
 */

Tento tvar nám umožnuje při volání funkce vidět co dotyčná funkce dělá a jaké očekává vstupní hodnoty.

// komentář – zakomentuje pouze kód na daném řádku
# komentář – zakomentuje pouze kód na daném řádku
/* komentář – všechno, co se nachází mezi tímto je bráno jako komentář */

Nevýhoda těchto komentářu je, že nevidíte k čemu vlastně daná funkce je, jaký je její návratový typ nebo jaké parametry očekává. Tyto typy komentářu použijete v místech jako jsou podmínky, cykly a pro specifikování určitého řádku nebo bloku.

Dodržujte jednotnou syntaxi v celém kódu!

Je špatným zvykem psát jeden kus kódu jedním způsobem a druhý zase jinak. Uvedu příklad:

První tvar:

if ($a > $b) echo „a je větší než b“;

Druhý tvar (jiný kód):

if ($b > $c) {
        print „b je větší než c“;
}

Naučte se jeden způsob zápisu a ten dodržujte. Já se držím pravidla psát podmínku na jeden řádek a co má být po splnění podmínky dávám do složených závorek. Přijde mi to jendodušší pro čtení, ale to je možná jenom můj názor ?.

if ($a > $b) {
        echo “a je vetší než b”;
}
else {
        echo “b je větší než a”;
}
Každý vnořený cyklus, funkci,
nebo něco podobného odsazujte tabelátorem. Zajistíte si tím větší čítelnost kódu. Na první pohled zjistíte, kde vám začíná a kde vám končí podmínka, kde vám začína a končí vnořená podmínka atd.
if ($a > $b) {
if ($b > $c) {
echo “a je větší než b a zároveň b je větší než c”;
}
else{
echo “a je větší než b a zároveň b je menší než c”;
}
}

Naprosto nepřehledný až „hnusný kód“. Nejde v něm na první pohled vídět jestli tam je vnořená podmínka nebo ne a co se skrývá uvnitř podmínky.

if ($a > $b) {
        if ($b > $c) {
                echo “a je větší než b a zároveň b je větší než c”;
        }
        else{
                echo “a je větší než b a zároveň b je menší než c”;
        }
}

Nádherně čitelný kód. Na první pohled je zřetelné, že se jedná podmínku a v ní je obsažená další podmínka. Taky jde poznat, kde je začátek podmínky a kde její konec.

Ve vývojových prostředích taky bývá funkce tzv. „autoformátování“, která vám označený kód pěkně uspořádá. V eclipsu to je „ctrl + shift + f“, ovšem musíte míto označený text, který chcete naformátovat.

Buďte líní!

Možná si říkáte proč bych měl být líný? Vždyť pak nic nenaprogramuju. Opak je ale pravdou. Správný programátor by měl být líný, ale pouze do určité míry, hned vysvětlím proč. Máte kód, který píšete pořád a pořád dokola. Programátor, který není dostatečně líný bude psát znovu a znovu ten samý kód, avšak programátor který je líný a nechce se mu psát pořad stejný kód si napíše funkci, ve které bude obsažená opakující se část kódu a bude volat jenom danou funkci. S tímto je taký vzpjata tzv. „Obecnost“ neboli generalizace. Snažte se co nejvíce zobecnit funkce nebo celé Třídy. Čím větší obecnost, tím větší je šance znovupoužit váš kód.

Nevypisujte něco přímo pomocí echo „tohle se zobrazí na stránce“ nebo alespoň se o to pokuste. Zachovejte rozdělení aplikace na 3 vrstvy:

  • prezentační
  • logickou
  • databáze

Zajistíte si tím lehčí opravování kódu a větší přehlednost. Ještě jedna věc na závěr k tomuto tématu. Snažte se používat zkratky „ctrl + c“ a „ctrl + v“ co nejméně. Myslím, že mi každý dá za pravdu, kolik zbytečných chyb se nadělá používáním těchto zkratek a kolik času potom ztrávíte hledáním chyb. Je to způsobeno tím, že na první pohled vypadá určitý kód podobně, tak proč ho nezkopírovat. Jenomže často se stává, že zapomenete pozměnit proměnnou, nebo hodnotu a chyba je na světě. V nejhorším případě je zkopírován kód, který je sám o sobě chybný a je používán na více místech, nakonec se však může zjisti, že kód je špatný a aje třeba dohledávat, kde všude byl zkopírován a opravit chyby.

Pokud možno pište veškerý kód i komentáře anglicky!

Říkám to hned z několika důvodu. Anglicky rozumí většina lidí na Zemi aproto můžete požádat o pomoc téměř kohokoli, jenom mu pastnete kód a bude vědet o co se jedná. Těžko však bude nějaký angličan rozumět česky napsanému kódu a asi těžko vám poradím. Mám s tím velké zkušenosti z práce. Dostáváme kód napsaný v céčku a s finskými komentáři a finskými proměnnými. Nikomu to fakt nepřeju, potom nemáte ani tušení co jaká proměnná znamená a k čemu slouží některé funkce. Další výhodou je to, že se nemusíte starat o gramatiku (háčky, čárky) v názvech proměnných a třídach. Např. taková třída „Animal“ zní rozhodně lépe než „Zvire“ ?. Anglicky napsaný kód se lépe „prodává“. Z těchto důvodů se budu snažit psát veškerý kód a komentáře anglicky.

Smysluplně pojmenovávejte vaše proměnné!

Občas je obtížné najít ten správný název pro danou proměnnou a mnohdy to skončí pojmenováním jako je třeba $a, $neco, $pokus, $test nebo i hůř ?. Rozhodně je lepší mít název proměnné delší, než vytvořit kratičký název proměnné, kdy v pozdější fázi nepochopíme o co se vlastně jedná. Pokud se název proměnné skládá z více než jednoho slova můžete buď napsat:

$nazevPromenne – první písmeno prvního slova bude malým písmenem, a vždycky další slovo bude začínat velkým písmenem

$nazev_promenne – jednotlivá slova oddělit podtržítkem

Názvy proměnných a fukncí by měly začínat malým písmenem. To naopak název třídy musí začínat velkým písmenem.

Logické datové typy a metody by měly začínat slovesem:
$isActive;
$hasAttribute;
$isInDB;
public static function isActive() { }
public function hasAttribute() { }…

Vyhněte se tzv. „Božským třídám“ !

Co to znamená? To jsou Třídy, které dělají téměř všechno i to, co by neměli dělat. Každá třídá má plnit svoji roli a né role navíc. Vemte si například taková třída pro načítání dat z databáze by měla mít za úkol pouze načítat data. Pokud nastane situace, že daná třída taky zobrazuje načtené data, pak je to špatně a už se třída blíží směrem k božské třídě.


Hodnocení tutoriálu: 1.4 (hodnotilo 17 uživatelů)

Ohodnoťte tutoriál (jako ve škole):

Tutorialy.com © 2006 Marek Čapla & Filda | výměna odkazů | mapa webu | RSS zdroj | PageRank: 4 | ISSN 0322-9289

Online flash hry