„V určitých případech je dokonce užitečné oddělit objekt
od aktu jeho vytvoření“ – nezbývá než souhlasit. Třeba
u dětí je toto oddělení od aktu jejich vytvoření velmi žádoucí!
;)
Pardon, teď vážněji: Asi jsem četl jinou diskusi… ;) Říkal jsem
něco trošku jiného než jaks to interpretoval zde. Takže to
s dovolením trochu rozvedu:
Říkal jsem, že když jsem se v polovině 90. let OOP učil, tak
tehdejší guruové hlásali myšlenku „zapouzdřit“ a „objekt
se o sebe musí starat sám“. Byly určité náznaky, např.
„friend“ třídy, ale základ bylo zapouzdření + dědičnost. Ono
to ostatně tehdy ani moc jinak nešlo. Ačkoli „single
responsibility“ bylo známo, tak při tehdejším stavu vývoje bylo
spíš jako akademický koncept. Ostatně – jak dlouho že má .NET
extension methods? :)
Od té doby jsem víc v podstatě nepotřeboval, v Javě jsem
nedělal, v Object Pascalu (Delphi) to potřeba nebylo a v PHP pak už
vůbec. TAKŽE když jste mi poslední dva dny vyprávěli o těch
„samozřejmých kvalitních OOP věcech“, tak jsem si zjistil oč
jde (protože se rád nechám poučit) – a co nevidím? Ústup od
ortodoxních OOPistických pouček, co si z 90. let pamatuju… Ale
můžu to naformulovat jinak, co takhle třeba: „Vývoj
paradigmatu“? :)
Není to nic proti ničemu, nic špatného ani nějaké „uchýlení
k obecným proklamacím“. Jazyky se vyvíjejí, stejně tak
i přístup k programování a stejně tak i představa
o tom, co je „moderní“. V tomto smyslu jsem to taky
komentoval, asi jako Mirečkovo „To nás v Zahrádkách
neučili!“ Rozhodně nepopírám Single Responsibility princip ani ho
nestavím jako antipod zapouzdření, jen říkám, že je to posun proti praxi
z 90. let – kurs otočený ne o 180, ale řekněme tak
o 60 stupňů. A zrovna tak se odvažuju tvrdit, že za dalších
10 let přijdou do praxe další principy, které jsou dnes
„akademické“ a dnešními prostředky nedosažitelné /
neefektivní. Takže opravdu „houpačka“, kdy jsou
„v kursu“ ty techniky, které současná technologie
umožňuje.
Jak říká děda Simpson: „Bejval jsem v kursu, ale potom ho zas
změnili a ten, ve kterém jsem teď, není ten správnej, a ten správnej mě
děsí! To se stane i vám, hoši!“ :)
Takže když to shrnu: Učím se nový jazyk, sžívám se s jeho
knihovnou a začínám tím, že si zkouším „staré dobré obecné a
známé“ OO věci. Stejně tak si u nového mobilu nejdřív
vyzkouším základní funkce tak jak je znám, a teprve pak přijde na řadu
sžívání se „zkratkami“ a „novými postupy“, které
mi novější technologie umožní. A samozřejmě jsem rád vždy, když
mi někdo ukáže: „A víš že se to dá dělat
i takhle?“
A závěrem do smířliva: Říkáš, že Single Responsibility je
pravidlo, které má mít programátor na paměti. Já souhlasím a přidám
k tomu dodatek: Pravidlo je dobrý sluha, ale špatné dogma. ;)
Takže přeji dobrý večer a – měj strpení se starším mužem, co
si cestu k .NET prošlapával pětadvacet let od strojového kódu 8008 a
TinyBASICu… :)
PS: Děkuji za tip na extension methods a děkuji za všechny další tipy,
které mi v budoucnu rád a ochotně budeš poskytovat! ;) (To máš za to,
že ze mne děláš v článku tak trochu osla! ;) )
„V určitých případech je dokonce užitečné oddělit objekt od aktu jeho vytvoření“ – nezbývá než souhlasit. Třeba u dětí je toto oddělení od aktu jejich vytvoření velmi žádoucí! ;)
Pardon, teď vážněji: Asi jsem četl jinou diskusi… ;) Říkal jsem něco trošku jiného než jaks to interpretoval zde. Takže to s dovolením trochu rozvedu:
Říkal jsem, že když jsem se v polovině 90. let OOP učil, tak tehdejší guruové hlásali myšlenku „zapouzdřit“ a „objekt se o sebe musí starat sám“. Byly určité náznaky, např. „friend“ třídy, ale základ bylo zapouzdření + dědičnost. Ono to ostatně tehdy ani moc jinak nešlo. Ačkoli „single responsibility“ bylo známo, tak při tehdejším stavu vývoje bylo spíš jako akademický koncept. Ostatně – jak dlouho že má .NET extension methods? :)
Od té doby jsem víc v podstatě nepotřeboval, v Javě jsem nedělal, v Object Pascalu (Delphi) to potřeba nebylo a v PHP pak už vůbec. TAKŽE když jste mi poslední dva dny vyprávěli o těch „samozřejmých kvalitních OOP věcech“, tak jsem si zjistil oč jde (protože se rád nechám poučit) – a co nevidím? Ústup od ortodoxních OOPistických pouček, co si z 90. let pamatuju… Ale můžu to naformulovat jinak, co takhle třeba: „Vývoj paradigmatu“? :)
Není to nic proti ničemu, nic špatného ani nějaké „uchýlení k obecným proklamacím“. Jazyky se vyvíjejí, stejně tak i přístup k programování a stejně tak i představa o tom, co je „moderní“. V tomto smyslu jsem to taky komentoval, asi jako Mirečkovo „To nás v Zahrádkách neučili!“ Rozhodně nepopírám Single Responsibility princip ani ho nestavím jako antipod zapouzdření, jen říkám, že je to posun proti praxi z 90. let – kurs otočený ne o 180, ale řekněme tak o 60 stupňů. A zrovna tak se odvažuju tvrdit, že za dalších 10 let přijdou do praxe další principy, které jsou dnes „akademické“ a dnešními prostředky nedosažitelné / neefektivní. Takže opravdu „houpačka“, kdy jsou „v kursu“ ty techniky, které současná technologie umožňuje.
Jak říká děda Simpson: „Bejval jsem v kursu, ale potom ho zas změnili a ten, ve kterém jsem teď, není ten správnej, a ten správnej mě děsí! To se stane i vám, hoši!“ :)
Takže když to shrnu: Učím se nový jazyk, sžívám se s jeho knihovnou a začínám tím, že si zkouším „staré dobré obecné a známé“ OO věci. Stejně tak si u nového mobilu nejdřív vyzkouším základní funkce tak jak je znám, a teprve pak přijde na řadu sžívání se „zkratkami“ a „novými postupy“, které mi novější technologie umožní. A samozřejmě jsem rád vždy, když mi někdo ukáže: „A víš že se to dá dělat i takhle?“
A závěrem do smířliva: Říkáš, že Single Responsibility je pravidlo, které má mít programátor na paměti. Já souhlasím a přidám k tomu dodatek: Pravidlo je dobrý sluha, ale špatné dogma. ;)
Takže přeji dobrý večer a – měj strpení se starším mužem, co si cestu k .NET prošlapával pětadvacet let od strojového kódu 8008 a TinyBASICu… :)
PS: Děkuji za tip na extension methods a děkuji za všechny další tipy, které mi v budoucnu rád a ochotně budeš poskytovat! ;) (To máš za to, že ze mne děláš v článku tak trochu osla! ;) )