Dědičnost dnes

balki

Re:Dědičnost dnes
« Odpověď #15 kdy: 16. 01. 2017, 08:32:38 »
Já bych nebyl tak striktní - použití dědičnosti pro odstranění duplicity je v mnoha jazycích s tradičním OOP osmdesátých/devadesátých let (třeba Java) celkem v pohodě. Ale jenom pokud se jedná o čistě implementační záležitost (ideálně ani společný předek není veřejný). Problémy nastanou pokud někdo použije dědičnost jako součást API. To prakticky vždy znamená jámu do které někdo spadne...

Ved prave, v jave je vela takychto uchylakov, co to robia. Bud presli z MVC++, alebo mali nejakeho nevzdelaneho ucitela.  Osobne riesim duplicitu kodu bud delegaciou, alebo worker objectom, teraz k tomu pribudli aj funkcie. (No vo funkciach nie som este celkom doma). U mojho prveho zamestnavatela (nastastie som vtedy ako javista nepracoval), ked niekto pouzil dedicnost, aby sa mu neopakoval kod, dostal polhodinoveho "zjeba", ze ako si to predstavuje takto hovnit :)


balki

Re:Dědičnost dnes
« Odpověď #16 kdy: 16. 01. 2017, 08:38:56 »
Dedicnost pouzivam vtedy, ked potrebujem pouzit polymorfizmus.
Jenom pro úplnost: jsou jazyky kde je možný polymorfismus i bez dědičnosti.

Pri duck typingu sa pouziva dedenie spravania. Nepouziva sa tam sice explicitny "interface", ako v jave. Ale programator skratka vie, ze ten objekt ma nejake rozhranie (metodu). (alebo sa skratka spyta, ci taku ma)

gll

Re:Dědičnost dnes
« Odpověď #17 kdy: 16. 01. 2017, 08:42:09 »
Já bych nebyl tak striktní - použití dědičnosti pro odstranění duplicity je v mnoha jazycích s tradičním OOP osmdesátých/devadesátých let (třeba Java) celkem v pohodě. Ale jenom pokud se jedná o čistě implementační záležitost (ideálně ani společný předek není veřejný). Problémy nastanou pokud někdo použije dědičnost jako součást API. To prakticky vždy znamená jámu do které někdo spadne...

Ved prave, v jave je vela takychto uchylakov, co to robia. Bud presli z MVC++, alebo mali nejakeho nevzdelaneho ucitela.  Osobne riesim duplicitu kodu bud delegaciou, alebo worker objectom, teraz k tomu pribudli aj funkcie. (No vo funkciach nie som este celkom doma). U mojho prveho zamestnavatela (nastastie som vtedy ako javista nepracoval), ked niekto pouzil dedicnost, aby sa mu neopakoval kod, dostal polhodinoveho "zjeba", ze ako si to predstavuje takto hovnit :)

Jako vždy, označujete všechny za úchyláky, ale nenapíšete racionální důvod, proč to co dělají je špatně.

Kit

Re:Dědičnost dnes
« Odpověď #18 kdy: 16. 01. 2017, 08:47:17 »
U mojho prveho zamestnavatela (nastastie som vtedy ako javista nepracoval), ked niekto pouzil dedicnost, aby sa mu neopakoval kod, dostal polhodinoveho "zjeba", ze ako si to predstavuje takto hovnit :)

A to jako proč? Co to znamená, "ked niekto pouzil dedicnost, aby sa mu neopakoval kod"? Použití dědičnosti zpravidla redukuje opakování kódu, i když to není primárním účelem.

jpu

Re:Dědičnost dnes
« Odpověď #19 kdy: 16. 01. 2017, 08:51:37 »


balki

Re:Dědičnost dnes
« Odpověď #20 kdy: 16. 01. 2017, 08:55:22 »
Já bych nebyl tak striktní - použití dědičnosti pro odstranění duplicity je v mnoha jazycích s tradičním OOP osmdesátých/devadesátých let (třeba Java) celkem v pohodě. Ale jenom pokud se jedná o čistě implementační záležitost (ideálně ani společný předek není veřejný). Problémy nastanou pokud někdo použije dědičnost jako součást API. To prakticky vždy znamená jámu do které někdo spadne...

Ved prave, v jave je vela takychto uchylakov, co to robia. Bud presli z MVC++, alebo mali nejakeho nevzdelaneho ucitela.  Osobne riesim duplicitu kodu bud delegaciou, alebo worker objectom, teraz k tomu pribudli aj funkcie. (No vo funkciach nie som este celkom doma). U mojho prveho zamestnavatela (nastastie som vtedy ako javista nepracoval), ked niekto pouzil dedicnost, aby sa mu neopakoval kod, dostal polhodinoveho "zjeba", ze ako si to predstavuje takto hovnit :)

Jako vždy, označujete všechny za úchyláky, ale nenapíšete racionální důvod, proč to co dělají je špatně.

Podporuje to vznik roznych zkriplenych objektov, ktorych ucel nie je jasny, plus si tym programator zbytocne zahlcuje hierarchiu dedicnosti.

Ked sa pouzije casting potomka na rodica, mal by tento casting v ramci polymorfizmu fungovat. Pri DRY objektoch tomu tak nebyva.

Kit

Re:Dědičnost dnes
« Odpověď #21 kdy: 16. 01. 2017, 09:01:02 »
Podporuje to vznik roznych zkriplenych objektov, ktorych ucel nie je jasny, plus si tym programator zbytocne zahlcuje hierarchiu dedicnosti.

Ked sa pouzije casting potomka na rodica, mal by tento casting v ramci polymorfizmu fungovat. Pri DRY objektoch tomu tak nebyva.

Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?

Re:Dědičnost dnes
« Odpověď #22 kdy: 16. 01. 2017, 09:04:00 »
Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?
Já bych to řekl takhle: když někdo umí používat dědičnost, tak ji používá málo.
Když někdo používá dědičnost často, tak ji nejspíš používat neumí.

Ale pravdu bych se vyhnul ideologickým poučkám "dědičnost nepoužíváme, protože je to prasárna" - vždy je důležité hlavně vědět jaké konkrétní problémy vznikají.

balki

Re:Dědičnost dnes
« Odpověď #23 kdy: 16. 01. 2017, 09:07:06 »
U mojho prveho zamestnavatela (nastastie som vtedy ako javista nepracoval), ked niekto pouzil dedicnost, aby sa mu neopakoval kod, dostal polhodinoveho "zjeba", ze ako si to predstavuje takto hovnit :)

A to jako proč? Co to znamená, "ked niekto pouzil dedicnost, aby sa mu neopakoval kod"? Použití dědičnosti zpravidla redukuje opakování kódu, i když to není primárním účelem.

To, ze dedicnost redukuje opakovanie kodu je niekedy zhoda okolnosti, nie primarny ucel.
Ak dava zmysel aj rodic, aj potomok, nekomplikuje to vyvoj potomkov a redukuje to duplicitu kodu, vtedy je to vporiadku.

Kit

Re:Dědičnost dnes
« Odpověď #24 kdy: 16. 01. 2017, 09:09:22 »
Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?
Já bych to řekl takhle: když někdo umí používat dědičnost, tak ji používá málo.
Když někdo používá dědičnost často, tak ji nejspíš používat neumí.

Ale pravdu bych se vyhnul ideologickým poučkám "dědičnost nepoužíváme, protože je to prasárna" - vždy je důležité hlavně vědět jaké konkrétní problémy vznikají.

Tak to jsou Javisté na tom skutečně špatně, neboť používají dědičnost v každé třídě.

n

Re:Dědičnost dnes
« Odpověď #25 kdy: 16. 01. 2017, 09:11:17 »
Dědičnost používám tam, kde se potřeba. Je nutné, aby byl splněn výrok "potomek" _je_ "rodič". Například Automobil je Vozidlo, Faktura je Doklad, Kvádr je Těleso apod. Zároveň musí být v programu možná zaměnitelnost potomka a rodiče. Pokud tato pravidla nejsou splněna, dědičnost nelze použít.

Obvykle s Kitem nesouhlasim, ale tentokrat je jediny, kdo to tady minimalne jako Short Answer napsal poradne.
V posledni dobe je zas modni plivat na dedicnost, protoze programatora dela dnes kazdy debil, ktery to neumi pouzivat a pak se dostava do problemu. Casem to prejde - to jsou vzdy takove modni vlny, ktere rostou umerne tomu, kolik amateru ma moznost se k veci vyjadrovat.

balki

Re:Dědičnost dnes
« Odpověď #26 kdy: 16. 01. 2017, 09:11:34 »
Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?
Já bych to řekl takhle: když někdo umí používat dědičnost, tak ji používá málo.
Když někdo používá dědičnost často, tak ji nejspíš používat neumí.

Ale pravdu bych se vyhnul ideologickým poučkám "dědičnost nepoužíváme, protože je to prasárna" - vždy je důležité hlavně vědět jaké konkrétní problémy vznikají.

S tymto uplne suhlasim.

(Kit zasa podsuva svoje predstavy o tom, co si myslim, aj ked som nic take nenapisal)

Kit

Re:Dědičnost dnes
« Odpověď #27 kdy: 16. 01. 2017, 09:17:59 »
Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?
Já bych to řekl takhle: když někdo umí používat dědičnost, tak ji používá málo.
Když někdo používá dědičnost často, tak ji nejspíš používat neumí.

Ale pravdu bych se vyhnul ideologickým poučkám "dědičnost nepoužíváme, protože je to prasárna" - vždy je důležité hlavně vědět jaké konkrétní problémy vznikají.

S tymto uplne suhlasim.

(Kit zasa podsuva svoje predstavy o tom, co si myslim, aj ked som nic take nenapisal)

Pořád tady píšeš o redukci opakování kódu, která s dědičností nesouvisí, tak co si mám myslet?

balki

Re:Dědičnost dnes
« Odpověď #28 kdy: 16. 01. 2017, 09:20:32 »
Takže když někdo neumí používat dědičnost, tak je dědičnost špatná?
Já bych to řekl takhle: když někdo umí používat dědičnost, tak ji používá málo.
Když někdo používá dědičnost často, tak ji nejspíš používat neumí.

Ale pravdu bych se vyhnul ideologickým poučkám "dědičnost nepoužíváme, protože je to prasárna" - vždy je důležité hlavně vědět jaké konkrétní problémy vznikají.

S tymto uplne suhlasim.

(Kit zasa podsuva svoje predstavy o tom, co si myslim, aj ked som nic take nenapisal)

Pořád tady píšeš o redukci opakování kódu, která s dědičností nesouvisí, tak co si mám myslet?

Dedicnost je dobra a nepouziva sa na redukciu opakovania kodu. (aj ked k redukcii opakovania kodu moze dojst, ak je to tak spravne)  Staci taketo vyjadrenie?

Kit

Re:Dědičnost dnes
« Odpověď #29 kdy: 16. 01. 2017, 09:31:35 »
Dedicnost je dobra a nepouziva sa na redukciu opakovania kodu. (aj ked k redukcii opakovania kodu moze dojst, ak je to tak spravne)  Staci taketo vyjadrenie?

Ano, stačí.

Začátky chybného uvažování je již ve špatných učebnicích, ve kterých jsou nesmysly typu "B extends A" nebo "Bar extends Foo". Přitom ani v jednom případě to neplatí. Chudák čtenář si pak myslí, že se dědičnost používá na redukci opakování kódu a už se veze po špatné koleji.