Šuplík Honzy Hučína

Skok na navigaci (menu)

Tento blog je v současné době uzavřen.
Pokračování blogu na bloguje.cz jsem zrušil. Pokud budu někdy pokračovat, bude to spíš tady.

Jednotlivý článek

Internet a vše kolem
6. 9. 2006

Otevírací závorka, aneb konvence K&R není sama

Tenhle způsob zápisu kódu PHP používá, odhaduju, víc než 95 % programátorů. Článek na tom nic nezmění, ale je dobré o věcech přemýšlet. A třeba někdo nezná jedno malé tajemství...

Prohlédněte si příklad s dvěma různými zápisy. Liší se jen vizuálně, oba dva dělají to samé.

if ($x<0) {
    neco_udelej();
    jeste_neco_udelej();
}
if ($x<0)
{
    neco_udelej();
    jeste_neco_udelej();
}

Ten první je zápis podle konvence K&R, ten druhý podle konvence BSD/Allman.

Že skoro všichni dnes píšou podle K&R, je moc užitečné, když na projektu spolupracuje víc lidí, ale nemusí to znamenat, že konvence sama je ideální. Je dobré o tom chvilku přemýšlet.

Důvod pro K&R

Zápis tímto způsobem šetří řádky, protože otevírací závorka není na samostatném řádku. To bylo velmi důležité, protože když tenhle způsob zápisu vznikl, vešlo se při editaci na obrazovku 20–24 řádků kódu. Programátor tedy viděl víc kódu najednou.

Ten důvod dnes ztratil význam

Jsou tři argumenty, proč šetření řádky pro zápis kódu PHP dnes není až tak důležité.

Na obrazovku se vejde víc. To je ovšem poměrně slabé. Editory dnes pojmou klidně 50 a víc řádků na obrazovku, ale pořád je to omezené číslo. Úspora tedy může být vítaná pořád.

Program se skládá z víc menších kousků. I dřív existovaly knihovny užitečných funkcí, které se do kódu vkládaly, ale dnes je díky internetu sdílení kódu nesrovnatelně vyšší. Sdílený kód udělá tu nejotravnější práci a nemusí se ladit. Stáhnete si třeba šablonovací systém, rozdělíte svou prezentaci na aplikační skript, výstupní šablonu a soubor se styly – ve výsledku máte několik souborů zpravidla nejvýše o desítkách řádků. To se pak brutálně šetřit místem opravdu nemusí.

Jsou i jiné způsoby, jak šetřit řádky. Budete se divit, ale tohle (slibované malé tajemství) se v PHP smí:

if ($x<0) {$pole_chyb[]=5; break;}

Skalní vyznavači příkazů na samostatných řádcích se osypou, protože to je pro ně nepřehledné. Ale proč? Je to jeden krátký řádek, to se do zorného pole pohodlně vejde. Když před něj napíšu řádek s komentářem a za ním řádek vynechám, pořád to bude o řádek méně než u K&R. Podle mě se to bezvadně hodí třeba na jednoduchou kontrolu a ošetření chybových stavů.

A když ne složený příkaz, proč ne aspoň jediný příkaz, bez složených závorek:

if ($x<0) $pole_chyb[]=5;

Důvod proti K&R

if (!podminka() || !jina_podminka() || !jeste_jina_podminka())
    neco_udelej();
    jeste_neco_udelej();
}

Musíte projet očima až na konec prvního řádku, abyste zjistili, že chybí otevírací závorka. Kdyby správně měla stát na začátku dalšího řádku, zkontrolujete správné párování závorek mnohem rychleji, prohlížíte totiž jen nahoru–dolů. Trochu sice může pomoct, když máte editor zvýrazňující celé řádky obsahující odpovídající závorky, ale to ty řádky musíte projíždět kursorem. Oči jsou rychlejší.

Nehledě k tomu, že orientace pomocí párování závorek pomáhá rychle se vyznat v komplikovaném zanoření, který kus bloku k čemu patří (typicky které else patří k jakému if). Zastánci konvence K&R můžou namítnout, že se to dá poznat pomocí správného odsazování bloku vpravo, což je jistě pravda. Ale má to zase háček. Když používáte obě závorky na začátcích řádků, stačí vám pro přehlednost menší odsazení, třeba jen dva tři znaky. Pokud je odsazení vpravo jedinou metodou, jak udržet přehled, potřebujete odsadit víc, čtyři nebo i osm znaků. A rázem je pryč výhoda úspory – ušetříte sice řádky, ale ohromně plýtváte sloupci, příkazy vám vpravo dřív vyjedou z obrazovky.

Závěrem

Je dobré používat nějaký stálý styl zápisu programového kódu. A je lepší mít ten styl promyšlený a zdůvodněný, proč je pro vás dobrý. Je-li pro vás vědomě dobrý styl K&R, paráda. Není-li, přemýšlejte o jiném, třeba BSD/Allman.

Související: Odsazování (na PHP triky)

Komentáře (počet: 26, poslední 14. 9. 2006, 09:36, nelze přidat komentář)
RSS komentářů tohoto článku
Trvalý odkaz

Poslední články:

Další články si můžete vyhledat v jednotlivých přihrádkách, případně podle data.

© Honza Hučín 2004–6

Šuplík běží na PIPNI.CZ. Díky!

sber.cermat.cz

RSS Šuplíku

RSS komentářů – souhrnně

U každého článku je samostatný RSS kanál pro komentáře.

Výběr článků

Posledních 10 článků

nebo podle data:

nebo hledání fulltextem:

Archiv všech článků

Poslední komentáře

Zabili mě, parchanti [2]

8. 8. 16:48 | Pepa

Cestou kolem blogu [2]

7. 8. 21:26 | Honza Hučín

Cestou kolem blogu [1]

7. 8. 21:02 | Honza

Vrtulník nad hlavou [3]

6. 8. 14:29 | Pepa

Taková hra na volby [1]

3. 8. 18:29 | Honza

Nejčtenější

Žádné údaje nejsou k dispozici.

O mně

*1967, absolvent MFF UK v Praze (1991)

statistik, analytik, programátor, učitel, hudebník

nyní Ústav pro informace ve vzdělávání

Životopis (RTF)

Napište mi