Diskuze: Výhody objektů
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 12 zpráv z 112.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
omlouvám se za svůj češtin... takže z pohledu gramatiky pro prosím neposuzujte.
Já nemám nic proti OOP, v C# jinak než objektově neprogramuju, ale když říkáš kladné vlastnosti OOP, neměl bys lhát o těch záporných. OOP zkrátka má nějakou režii navíc a je pomalejší, i když je obvykle (téměř) zanedbatelná.
Vždyť i jen přiřazení int hodnoty do vlastnosti třídy (v poli tříd) je 2x pomalejší než přiřazení přímo do pole.
Třeba takové vytváření třídy je taky mnohonásobně nákladnější než jen zapisování hodnot do pole - samotné vytvoření třídy a naplnění daty je v OOP dokonce operace více než o řád pomalejší než bez OOP.
Co je to "Pole tříd"? V OOP, pokud vím, nic takového není.
Do vlastností tříd nikdy nic nepřiřazuji.
Vytváření třídy dělá JIT kompilátor. To je pouze při spouštění.
Třídu nikdy daty neplním, protože by to bylo pomalé.
Efektivita a rychlost je v OOP ukryta jinde.
S tebou se nedá normálně diskutovat, pořád jen slovíčkaříš a stáčíš diskuzi jinam, i s Matesaxem ta diskuze měla vyšší úroveň...
"Co je to "Pole tříd"? V OOP, pokud vím, nic takového není."
"Do vlastností tříd nikdy nic nepřiřazuji."
"Vytváření třídy dělá JIT kompilátor. To je pouze při spouštění."
"Třídu nikdy daty neplním, protože by to bylo pomalé."
"Efektivita a rychlost je v OOP ukryta jinde."
Kde?
Tak já se taky zapojím. V OOP je objekt složitým datovým typem, tím nejsložitějším. Proto bude vždycky pomalejší. Taky bere ohromné množství paměti. Ale OOP se kvůli rychlosti nevyužívá. Určitě není nutné bát se OOP kvůli rychlosti, protože v lidském vnímání je rozdíl opravdu minimální. Také záleží na návrhu aplikace. Já se vždycky snažím držet podle citátu:
Vždy pište kód tak, jako by ten chlapík, co ho po vás bude udržovat, měl být násilnický psychopat, který bude vědět, kde bydlíte.
Když máš v aplikaci 500 objektů, z čehož v dobrém návrhu užíváš najednou jen 10 a ve špatném všech 500, je to rozdíl.
Jak už jsem psal, OOP se kvůli rychlosti neužívá, užívá se kvůli rozdělení aplikační části a kvůli přehlednosti, znovupoužitelnosti a obecnosti.
Snorlax: Věř, že kdyby to v OOP bylo pomalejší a zároveň horší jako návrh, nikdo by to nepoužíval. Ovšem OOP používá každý druhý programátor (nepočítám ty, kteří pracují v plně objektových jazycích nebo neobjektových jazycích), takže si můžeš být jistý tím, že sám narazíš na výhody, které OOP přináší.
OOP je programovacia technika. Mozete ju pouzit aj ked ju jazyk priamo nepodporuje (kludne mozete pouzit OOP v cistom C...). Samozrejme v jazyky ktory podporuje OOP sa pise OO kod lepsie. Objekty mozu byt v jazyku implementovane roznymi sposobmi, napr v c++ si mozete vybrat ci ma obsahovat virtualne metody alebo nie (objekt nemusi vobec obsahovat pointer do vtable a moze byt velmi maly a po inlinovani metod a celych objektov je velmi rychly). V javascripte je zas Prototype-based OOP (cize samotne objekty uchovavaju svoj interface, nemaju presny typ/triedu). V objective-C, Smalltalk a podobnych jazykoch zas objekty kumunikuju pomocou sprav...
Tymto som chcel povedat ze v roznych jazykoch mozi byt OOP podporovane inym sposobom a moze podporovat ine vlastnosti. Niekedy moze byt oop pomale, inokedy rychle...
Nezabudajte ze OOP sa da kombinovat aj s inymi programovacimi technikami.
Zobrazeno 12 zpráv z 112.