Efektivně v PHP
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Efektivně v PHPEfektivně v PHP

 

Efektivně v PHP

Google       Google       10. 12. 2007       22 711×

Znalost jazyka neznamená pouze pochopení syntaxe. Znamená to také určitou úroveň kódu, jeho efektivnost, snadnou rozšiřitelnost a lehkou pochopitelnost. Podívejme se na časté začátečnické chyby.

V poslední době se ze mě stal člověk pachtící se po dokonalém kódu. Na svých projektech provádím pořád nějaký ten refactoring a práce jde pomalu. Ale práce je o to zábavnější, když vím, že ten kód je v pořádku a je efektivní. Nic se nesmí přehánět, musí nám vždy zůstat ten „zdravý rozum“. Ukažme si, co by ale opravdu v našem kódu být nemělo.

Podmínky

Velmi častou začátečnickou chybou je špatné napsání podmínek. Přitom podmínka je operace zabírající velmi mnoho operačního výkonu. Pracujme s příkladem. Máme jedenáct (hodnotících) číselných stavů a chceme jim pro efekt přidat barevné vyjádření. Špatný kód by vypadal asi nějak takhle:

if($bod==0): $color = "color:#ab0203"; endif;
if($bod==1): $color = "color:#d52b05"; endif;
if($bod==2): $color = "color:#fa530a"; endif;
if($bod==3): $color = "color:#fa8324"; endif;
if($bod==4): $color = "color:#fa9d24"; endif;
if($bod==5): $color = "color:#fac024"; endif;
if($bod==6): $color = "color:#ecce08"; endif;
if($bod==7): $color = "color:#dbec08"; endif;
if($bod==8): $color = "color:#b7dc04"; endif;
if($bod==9): $color = "color:#94dc04"; endif;
if($bod==10): $color = "color:#15be02"; endif; 

Nahoďme řečnickou otázku: Může proměnná $bod nabývat v jednu chvíli více hodnot? Myslím, že nikoli. Pak by tedy kód měl vypadat asi nějak takhle:

if($bod==0): $color = "color:#ab0203";
elseif($bod==1): $color = "color:#d52b05";
elseif($bod==2): $color = "color:#fa530a"; 
elseif($bod==3): $color = "color:#fa8324"; 
elseif($bod==4): $color = "color:#fa9d24"; 
elseif($bod==5): $color = "color:#fac024"; 
elseif($bod==6): $color = "color:#ecce08"; 
elseif($bod==7): $color = "color:#dbec08";
elseif($bod==8): $color = "color:#b7dc04";
elseif($bod==9): $color = "color:#94dc04";
elseif($bod==10): $color = "color:#15be02"; endif; 

Pomiňme, že kód je velmi těžce rozšiřitelný, a vyhodnoťme výsledek. V ideálním případě jsme nyní ušetřili 10 zpracování podmínek. A to se počítá. Ale upřímně, takový kód se nesluší snad ani pro kompilované jazyky, natož pro ty interpretované, které disponují asociativními poli apod. Zde není ono asociativní pole ani potřeba a dosáhneme opravdu efektivního výsledku:

$colors = array("#ab0203", "#d52b05", "#fa530a",
				"#fa8324", "#fa9d24", "#fac024", "#ecce08",
				"#dbec08", "#b7dc04", "#94dc04", "#15be02");

$color = "color:" . $colors[$bod];

Nakonec, sami vidíte, že tento kód je i kratší.

Funkce, funkce, funkce

Využití dostupných funkcí je základní vlastnost dobrého programátora. Už pouhý výraz v podmínce je přehlednější a jasnější. Osobně proto preferuji tento zápis:

if (empty($foo)) {   //nenechte se zmýlit, dvojité slovo empty zaviňuje js zvýrazňovač :-/
}

Namísto:

if ($foo == "") {
}

Narychlo jsem ve svém archívu vybrousil jednu krásnou, tedy spíše hnusnou, funkci. (Musím doplnit, že svůj krásný archív začátků jsem asi už smazal :(.) Funkce slouží k odstranění lomítek ze začátku a konce řetězce.

function pryc_lomitko($string)
{
	$i = 0;
	if($string{0} == '/') $i = 1;
	$y = strlen($string)-$i;
	if($string{strlen($string)-1} == '/') $y = $y-1;
	
	return substr($string, $i, $y);
}

A to stačí jen:

trim($string, '/');

Štábní kultura

S umem programovat souvisí i jeho „štábní kultura“. Přehledný kód je přímo radost číst a učit se z něj. Ale koho by bavilo louskat něco, co ještě dělá plno oklik a nevyužívá k tomu potřebné funkce. Počínaje správným a výstižným pojmenováním proměnných a konče odsazením, uzávorkováním apod. můžeme dosáhnout krásného výsledku.

 if($data_cla2["hodnoceni"]!=0): $kolikhl="Již ".$data_cla2["hodnoceni"]." hlasovalo."; else: $kolikhl=""; endif;

A lépe:

if ($clanek["hodnoceni"] !== 0) {
	$hlasu = "Již {$clanek["hodnoceni"]} hlasovalo.";
} else {
	$hlasu = null;
}

Dobrý programátor by neměl občas zapomínat i na komentáře. Zde ale střídmost platí 10násob. Dobře upravený kód napoví mnohem více, než dvouvětný komentář.

Pokud narazím na pěkně refactorovatelný kód, určitě se s vámi o něj podělím. Závěrem přeji mnoho úspěchů při vylepšování vašich „zdrojáků“, pevné nervy při učení nových věcí a hodně povedených projektů.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jan ŠkrášekHonza pracuje jako webdeveloper, věnuje se vývoji Nette\Database a Nextras komponentám. Mnoho času věnuje komunitnímu portálu signály.cz. Honza je taky fanouškem XML technologií.
Web     Twitter    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý