Hlavní navigace

Názor ke zprávičce Kritika objektového programování: je to katastrofa? od Ondřej Novák - Asi jsem totálně mimo. Funkce že nemůže mít...

  • 23. 7. 2019 14:44

    Ondřej Novák

    Asi jsem totálně mimo. Funkce že nemůže mít vnitřní stav? A co tedy vidíte?

    Ale jo, rozumím tomu, že "správně zadefinovaná" funkce nesmí mít vnitřní stav. Ale běžně píšu funkce a potažno lambda funkce, který běžný vnitřní stav mají. Je to OOP programování nebo funkcionální programování?

    vemte si objekt. Objekt příjme zprávu, a zpracuje ji, eventuálně generuje další zprávy na jíne objekty.

    function vytvor_objekt(params) {
        var vnitrni_stav = params;
       return function(zprava) {
           switch (zprava.nazev) {
               case "get" : return vnitrni_stav;
               case "set" : vnitrni_stav = zprava.hodnota;return;
               default: return "neumim";
           }
      }
    }
    $ var obj = vytvor_objekt(10)
    undefined
    $ obj({nazev:"get"})
    10
    $ obj({nazev:"set", hodnota:20})
    undefined
    $ obj({nazev:"get"})
    20
    $obj({nazev:"aaa"})
    "neumim"

    Je to funkce nebo objekt? Přijímá to zprávy, zapouzdřuje to vnitřní stav, dědičnost by se dala udělat dekompozicí (prostě by potomek do vnitřního stavu zahrnul předka a neznámé zprávy by forwardoval předkovi) a to by řešilo i polymorfismus.

    Pořád ne? Musíte mít na to úředně razítko, nebo umíte změnit úhel pohledu? O tom to totiž je