PHP žije, představte si to, a dokonce se vyvíjí velmi slibným směrem. Chápu, že se na něj budou utrhovat lidi z Javy/Kotlinu a podobných sfér, proti nim je to jazyk dosti primitivní a velmi úzkoprofilový, ale nechápu, co si tu leští fanoušci Pythonu. Už dostali do svého jazyka zapouzdření a vůbec použitelný OOP, nebo je to pořád nastavovaný zprasek architektury z 90. let? :-)
Už dostali do svého jazyka zapouzdření
naštěstí ne a doufám že svuj geniální 'podtžítkovej' koncept nebudou měnit :D ;D
Zapouzdření je zlatý tele určitý skupiny ani ne tak programátorů jako ideologů a nepřináší žádej praktickej užitek, jenom metráky zbytečnýho zdrojáku navíc.
ruku nahoru kdo se někdy musel prohackovat nebo prodědit k nějaký pitomě použitý protected proměný v nějakým oop jazyku :D ;D
Ano, ale při nastupování si musíte vždy uvázat kravatu, protože pak při jízde vypadáte lépe. Jinak se auto ani nerozjede. Co na tom, že v některých (extrémních) případech kravata škrtí. (Copypaste kódu do jinak odindentovaného bloku.)
A krom toho zjistíte, že pokud nemáte poslední verzi, tak třeba světla svítí pouze minimálním předepsaným výkonem, a musíte si namontovat přídavný světlomet (použít IDE nebo linter) abyste něco viděl (překlep v atributu objektu při přiřazení)...
(K php se vyjadřovat nebudu, to mě v době 5.3 znechutilo nekonzistencí natolik, že ho od té doby nesleduju)
2. 12. 2020, 23:41 editováno autorem komentáře
Co to plácají za kraviny? Když už chtějí používat přirovnání, měli by se naučit správně vyjadřovat. Píchlé není to kolo, ale pouze obal z tvrzené gumopryže vynalezený jistým Dunlopem, který pro fungování kola není nezbytný. Pokud si nevšimli, tak o nahrazení této nedokonalé části se pokouší lidstvo již docela dlouho.
@SB
:-D
A co je to pak "skrytá vlastnost objektu"?
A co je pak "rozvalené"
Jinak "prodědit" bude asi znamenat to, že se k nějakému stavu objektu uchovanému v nějaké proměnné nedostanete jinak, než děděním, protože autor udělal minimálně protected všechno, co zrovna on tehdy hned nepotřeboval a nyní se kvůli nějaké jedné debilní hodnotě musí podědit a přepsat několik tříd, jejihž ostatní funkce jsou potřeba, ale je v nich zapouzdřená nějaká jiná proměnná jiného objektu.
Typicky, používáte z nějakého balíčku např. třídu A, jejíž atribut je třída B, která má protected proměnnou "p".
Při použití potřebujete nastavit "p", jenomže je protected a tak musíte rozšířit třídu B do B', jenomže někdo geniálně napsal do konstruktoru A třídu B natvrdo, takže musíte podědit i A do A', do ní injektovat B' připadně interface B', přepsat několik metod a dále používat třídu A'.
Tedy musíte vytvořit A', B' abyste se dostal k p, přestože např. uchovává jenom nějakou blbost, kterou vlastně ani není potřeba zapouzdřovat, jenom je to "best practice" z internetu. Super. Výraz prodědit je k tomu řekl bych ideální
3. 12. 2020, 14:18 editováno autorem komentáře
To víme. To je jasné. Jenom mi připadlo zvláštní, že se pohoršujete nad "prodědit" a pak máváte nějakým "skrytým" ... ;-)
Ano, je to špatná závislost uvnitř knihovny. Ne, není často zas tak na výběr a zas takový průser to nakonec nebyl, jenom trocha práce navíc a pár sprostých slov jako ocenění tvrdé práce autora. Daleko víc mě rozesmutněla medoda na asi 800 řádcích. No co už, nedivím se mu, refaktoring té prasečiny reálně ... nereálný.
Tady nebylo chybějící zapouzdření, ale spíš přepouzdření. Resp. pokud má třída nějakou vlastnost, není špatné se zamyslet nad tím, jestli by neměla být přístupná pro nastavení.
To jsou tedy silná slova.
1. Python má "private" atributy. Dá se k nim dostat "oklikou", ale nikdo to nedělá a pokud to udělá, pozná se to (pylint atd.). V praxi není problém.
2. Python má "protected" atributy. Dá se k nim dostat přímo, ale pylint automaticky varuje.
Kde je jaký problém V PRAXI? Neřeším svaté knihy OOP, to mě nezajímá. Python má spíš problémy ve slabém typovém systému a přespřílišné dynamičnosti, ale to je nešvar běžný v OOP.
Zabývat se OOP už my přijde jako dávná minulost. Připomnělo mi to tabulky z této stránky https://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html a vojáky z první světové :D . Tím zpraskem z 90tek myslíte OOP :D?
IMO jako Java/Kotlin vývojář, je moje zkušenost, že OOP je nejlepší co nejvíce minimalizovat. Příjde mi, že v Jave je/byl dost OOP fašismus a dnes to míří více k používání dynamických struktůr (pole, mapy), které jsem dřive pythonu záviděl. Dneska lze už vše napsat IMO lépe, čitelněji v Kotlinu. Ale to je věc tak posledních 4 let max.
Pardon nepřesně jsem se vyjádřil. Reagoval jsem na příspěvek a chtěl jsem říct, že pošťuchovat jiný jazyk za OOP mi přijde jako minulost.
OOP pužívám. Určitě požívat všude funkce smysl nedává. Jde o to že nepotřebujete x pravidel, principů, návrhových vzorů atd. Jinak řečeno je to jednoduší, méně problematické, méně prostoru pro chyby.
Místo toho abyste udělal balíky funkcí se stavem / bez stavu, tím myslím objekty, tak začnete rovnou se vším rozkouskovaným a poskládáte to dohromady. Složitost měnění/rozkládání objektů oproti funkcím je se složitostí úplně někde jinde.
Ten odkazovaný článek obsahuje tolik nepřesností až demagogií, že nemá smysl brát vážně jej ani jeho závěry (pravda, nedočetl jsem to do konce, nemělo to smysl).
OOP vůbec nemusí být minulostí, jestliže se nestalo ani přitomností. Zrovna Java není dobrým jazykem pro pochopení a využití možností OOP, pravděpodobně jste jedním z mnoha, kteří si to myslejí.
Váš jazykový projev je zoufalý.