Abstrakce u OOP

Re:Abstrakce u OOP
« Odpověď #30 kdy: 11. 06. 2020, 12:52:53 »
Tak existuje klasické pravidlo, zda objekt IS nebo objekt HAS.

casto neni ani jedno, co treba mixiny? Je to dedeni, ale pouzivaji se treba pro pridavani atributu do trid.

pokusy o slovni popisy vyznamu kodu nefunguji.

Že mixin není ani IS ani HAS ještě neznamená, že slovní popisy nefungují. Mixin je něco, co přimixuju a co mohu poměrně svobodně přimixovávat právě bez ohledu na to, co objekt IS nebo HAS.

Slovni popisy nefunguji, protoze programy nepiseme v prirozenem jazyce.
Komentáře jsou psané přirozeným jazykem. Sémantika toho programovacího jazyka bývá taky popsaná přirozeným jazykem.
Troufnu si tvrdit, že veškeré nedostatky formálních jazyků flíkujeme právě tím přirozeným. Což je pro mně dostatečný důkaz toho, že slovní popisy fungují.


Re:Abstrakce u OOP
« Odpověď #31 kdy: 11. 06. 2020, 13:02:26 »
Komentáře jsou psané přirozeným jazykem. Sémantika toho programovacího jazyka bývá taky popsaná přirozeným jazykem.
Troufnu si tvrdit, že veškeré nedostatky formálních jazyků flíkujeme právě tím přirozeným. Což je pro mně dostatečný důkaz toho, že slovní popisy fungují.

pouzivani slovnich komentaru je na ustupu, nahrazuji je doctesty, typove anotace.

Re:Abstrakce u OOP
« Odpověď #32 kdy: 11. 06. 2020, 13:03:17 »
Mixiny dělají akorát bordel v kódu. Snadno se píší, ale blbě se čtou. Přitom se dají jednoduše nahradit kompozicí.
Mixiny jsou druh kompozice. Akorát na rozdíl od kompozice přes membery nebo privátní dědičnost se skládá i vnější rozhraní třídy.
Spousta jazyků neumí jednoduše vytáhnout rozhraní membera do rozhraní třídy, takže alternativa k mixinům je psaní boilerplate kódu. Ten boilerplate kód se možná snáze čte, ale zase hůř modifikuje. Úpravy boilerplate kódu bývají náchylné k chybám, protože je to mechanická dělničina.

Re:Abstrakce u OOP
« Odpověď #33 kdy: 11. 06. 2020, 13:30:48 »
pouzivani slovnich komentaru je na ustupu, nahrazuji je doctesty, typove anotace.
Doctest je dokumentace s kousky zdrojáku. Místo komentářů se používají ve chvíli, kdy se soustředím na formátování toho přirozeného textu. Ve chvíli, kdy se neklade důraz na ten slovní popis, tak nemá cenu psát doctest.

Typové anotace přidávají statické typy do dynamicky typovaných jazyků. Pořád je třeba nějak specifikovat, co ty typy dělají.

BTW : Název něčeho je primárně slovní popis pro nás. Pro překladač je "v0a25" stejně dobrý název jako cokoliv jiného. Jen my lidi jsme bez tohohle slovního popisu těžce v pasti.

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #34 kdy: 11. 06. 2020, 15:28:10 »
Komentáře jsou psané přirozeným jazykem. Sémantika toho programovacího jazyka bývá taky popsaná přirozeným jazykem.
Troufnu si tvrdit, že veškeré nedostatky formálních jazyků flíkujeme právě tím přirozeným. Což je pro mně dostatečný důkaz toho, že slovní popisy fungují.

pouzivani slovnich komentaru je na ustupu, nahrazuji je doctesty, typove anotace.

Slovní komentáře jsou prakticky nenahraditelné pro dovysvětlení záměru nebo kontextu. Nechápu, proč pořád chrlíš nějaké zjednodušující rezolutní závěry.

Naopak nevím, co myslel předřečník tím nedostatkem formálních jazyků.


Re:Abstrakce u OOP
« Odpověď #35 kdy: 11. 06. 2020, 16:01:55 »
Nechápu, proč pořád chrlíš nějaké zjednodušující rezolutní závěry.

zjednodusujici rezolutni zaver s HAS a IS tu psali ostastni

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #36 kdy: 11. 06. 2020, 16:02:55 »
Slovní komentáře jsou prakticky nenahraditelné pro dovysvětlení záměru nebo kontextu.

V čem jsou slovní komentáře nenahraditelné? Od toho tu jsou přece názvy věcí, aby vysvětlily vše potřebné.

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #37 kdy: 11. 06. 2020, 16:12:34 »
Slovní komentáře jsou prakticky nenahraditelné pro dovysvětlení záměru nebo kontextu.

V čem jsou slovní komentáře nenahraditelné? Od toho tu jsou přece názvy věcí, aby vysvětlily vše potřebné.

Ony vysvětlí, proč jsi použil bubble sort namísto quick sortu, viď. Nebo proč nějaký vstup od 3. strany ošetřuješ zrovna takhle, když posílá jiný formát odpovědi, než říká dokumentace.

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #38 kdy: 11. 06. 2020, 16:46:38 »
Slovní komentáře jsou prakticky nenahraditelné pro dovysvětlení záměru nebo kontextu.

V čem jsou slovní komentáře nenahraditelné? Od toho tu jsou přece názvy věcí, aby vysvětlily vše potřebné.

Ony vysvětlí, proč jsi použil bubble sort namísto quick sortu, viď. Nebo proč nějaký vstup od 3. strany ošetřuješ zrovna takhle, když posílá jiný formát odpovědi, než říká dokumentace.

To patří spíš do dokumentace, ne?

Re:Abstrakce u OOP
« Odpověď #39 kdy: 11. 06. 2020, 17:32:48 »
Slovní komentáře jsou prakticky nenahraditelné pro dovysvětlení záměru nebo kontextu.

V čem jsou slovní komentáře nenahraditelné? Od toho tu jsou přece názvy věcí, aby vysvětlily vše potřebné.

Ony vysvětlí, proč jsi použil bubble sort namísto quick sortu, viď. Nebo proč nějaký vstup od 3. strany ošetřuješ zrovna takhle, když posílá jiný formát odpovědi, než říká dokumentace.

To patří spíš do dokumentace, ne?
Tím bych si nebyl až tak jistý. Dokumentace je ještě o krok dál od kódu, než komentáře. A i komentáře bývají dost často zastaralé. Dokumentuje se navíc hlavně API. Zdůvodnění implementačních detailů jsem v dokumentaci moc často nepotkal.
A kdy jste naposled při bisectování gitu bisectoval současně i dokumentaci? ;)

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Abstrakce u OOP
« Odpověď #40 kdy: 11. 06. 2020, 18:53:01 »
Tak existuje klasické pravidlo, zda objekt IS nebo objekt HAS.

casto neni ani jedno
Nevím, s tím jsem se v praxi nesetkal. Buď objekt je předek - dědím, nebo má vlastnost - komponuji, nebo nemá ani jedno, tak nedělám ani jedno.


co treba mixiny? Je to dedeni, ale pouzivaji se treba pro pridavani atributu do trid.
V kterém jazyce jsou mixiny dědění? Neříkám, že ne, ale co jsem se setkal traity (php), nebo mixiny (c#) nepřidávají do projektu vlastnost předka - což je taková asi z těch zásadnějších výhrad: já nechci, aby prase bylo kočka, já chci jen aby chodilo.

Re:Abstrakce u OOP
« Odpověď #41 kdy: 11. 06. 2020, 19:20:04 »
V kterém jazyce jsou mixiny dědění?

v jazycich s vicenasobnou dedicnosti se mixiny implementuji dedenim, treba v pythonu je to bezny pattern. Pouzivaji to hojne popularni knihovny. Treba https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Abstrakce u OOP
« Odpověď #42 kdy: 11. 06. 2020, 20:05:57 »
V kterém jazyce jsou mixiny dědění?

v jazycich s vicenasobnou dedicnosti se mixiny implementuji dedenim, treba v pythonu je to bezny pattern. Pouzivaji to hojne popularni knihovny. Treba https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html

OK. Díky za příklad. Tak je to Python, tam to s těmi typy je takové... Každopádně pak tu zůstává ta otázka s tou přehledností.

Re:Abstrakce u OOP
« Odpověď #43 kdy: 11. 06. 2020, 20:58:30 »
V kterém jazyce jsou mixiny dědění?

v jazycich s vicenasobnou dedicnosti se mixiny implementuji dedenim, treba v pythonu je to bezny pattern. Pouzivaji to hojne popularni knihovny. Treba https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html

OK. Díky za příklad. Tak je to Python, tam to s těmi typy je takové... Každopádně pak tu zůstává ta otázka s tou přehledností.

je to normalni vicenasobna dedicnost, kompatibilni se statickym typovanim i s protokoly

https://mypy.readthedocs.io/en/latest/more_types.html#mixin-classes
« Poslední změna: 11. 06. 2020, 21:00:45 od A.P.Hacker »

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Abstrakce u OOP
« Odpověď #44 kdy: 11. 06. 2020, 21:26:14 »
V kterém jazyce jsou mixiny dědění?

v jazycich s vicenasobnou dedicnosti se mixiny implementuji dedenim, treba v pythonu je to bezny pattern. Pouzivaji to hojne popularni knihovny. Treba https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html

OK. Díky za příklad. Tak je to Python, tam to s těmi typy je takové... Každopádně pak tu zůstává ta otázka s tou přehledností.

Přehledné to moc není. Určitě bych se vícenásobné dědičnosti vyhnul.