Šetři můj mozek a obnažuj toho co nejméně

Některým může tento článek připadat jako zbytečný truismus. Nicméně na dubnové Ruby(/Python) středě jsem se dostal do sporu s Pythonisty, kteří obhajovali neexistenci private a protected členů argumentem, že „jsme přece všichni rozumní lidé„. Stačí použít podtržítko před názvem a všichni ví, že ten člen nemají používat, a pokud ano, jen na vlastní nebezpečí.

Někteří šli ještě dál a tvrdili, že schovávání je v interpretovaných jazycích úplně k ničemu. Když někdo bude chtít zavolat metodu, zavolá ji přes reflection či podobnou vlastnost jazyka, nebo ji natvrdo prohlásí za public, protože má k dispozici zdroj.

Ale o to přece vůbec nejde.

Schovávání implementace a členů není důležité proto, aby na ně nikdo nesahal, ale proto, aby na ně nikdo, kdo s třídou pracuje, nemusel myslet! Aby si mohl uvolnit omezenou kapacitu lidského mozku pro důležitější úkoly. Aby viděl jen interface a nemusel zároveň přemýšlet o implementaci. Aby mohl přemýšlet – místo o datových typech, algoritmech a databázi – o problému v jazyce reálného světa – „zákazník, faktury, doba dodání, DPH, reklamace“.

Každý prvek v programu by měl obnažovat jen minimální sadu vlastností, potřebnou pro komunikaci se světem.

Skrývání je sexy.

Uvolnění mozkové kapacity pro vyšší úroveň abstrakce je nejdůležitější důvod pro schovávání informací (a psaní tříd a metod s jednoznačným účelem, psaní metod s nízkou cyklomatickou komplexitou, automatizované testy a…). Koneckonců to je hlavní důvod, proč se neustále pohybujeme k vyšším jazykům (ASM k C k Pythonu) a ne naopak.

P.S.: To není článek proti Pythonu.

Příspěvek byl publikován v rubrice Nezařazené. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

1 komentář u Šetři můj mozek a obnažuj toho co nejméně

  1. v6ak napsal:

    Ona je to někdy i otázka sémantiky, pokud se použije dědičnost (jakkoli se mnohdy pooužívá zbytečně) – neměl by být problém, pokud se rozhodnu pojmenovat metodu/field stejně jako se rozhodl autor předka. Nebo stejně, jako ji autor předka v budoucnu pojmenuje…

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>