Pojem oop uz strasi tenhle svet dostatecne , dlouho tak si zaslouzi nejakou definici, at se chudaci juniori maji od ceho odpichnout. Pokud se definice nenajde, protoze si pod tim kazdej predstavuje neco jinyho, tak je to taky dobrej poznatek. Muze se pak celej pojem oop zahodit a vyresi se tim spousta semantickych nedorozumeni.
Jinak ja se bavim o modelovani realnyho sveta. Napr. business problemu. V takovym problemu figuruje cas. Kazdy z techto problemu muze byt namapovan na nejaky reaktivni system. Pokud v systemu nefiguruje cas, pak se da takovy problem reprezentovat pouhou statickou funkci, ktera mapuje vstupy na vystupy. Pak zadny oop neni treba, staci napsat obyc funkci a poskladat ji z mensich funkci atd.
Podivej se na ten koncept co pouziva Trailblazer (http://trailblazer.to/) a predevsim (http://trailblazer.to/gems/cells/)
Netvrdim, ze to je to nejlepsi a jediny, ale ty koncepcni casti a to jak "uchopili" problem se mi zamlouva. Jenze taky rozumim tomu, ze ne vzdycky to sedi/je mozny podle "modeloveho prikladu". Neboli jestli chces zobecnit "realnej svet" na nejakou tridu/sablonu, neuspejes. Jdu se mrknout na tu prednasku cos poslal, jsem zvedavej. Dik za link.
Kdyz vezmeme v potaz treba onen "log" ve chvili kdy ti to plive nejakej vystup do "souboru" je to asi fuk, ale ve chvili, kdy chces treba pouzit ruzny "system" do kterejch to loguje, prave treba polymorfizmus je na to jak delanej. Cili podle toho jestli je instance of "loguj do sentry" nebo "loguj do souboru" nebo "loguj do graylogu", ohnes to strasne jednoduse a nezabordeli se ti to. Protoze nekde ve tride volas jenom Log.write(message).
Shodou okolnosti ten prvni link co jsem ti poslal na tu prednasku tak tam pan velmi dobre vysvetluje, ze chces vracet iteratable misto dict a nemusis pak delat zbytecny bastleni.
Nejvic polymorfickej mechanismus co znam jsou unix pipes a files. Misto toho abych v pythonu nebo jave bastlil svoji reimplementaci polymorfismu na logovani, radsi udelam
Sys.stderr.write(message)
A zabalim celrj program do nejakyho shell skriptu nebo systemd unit configu, kterej mi to redirectne do graylogu, sentry, do filu, systemd journalu.
Nac tahat zbytecny zavislosti na tyhle externi sluzby do jednoduchyho python skriptu. Kdyz to chce nekdo pustit na cli a podivat se na vystup, at ten log plivne do stderr. Kdyz to chce nekdo plivnout do graylogu, klidne muze.
Sam uz vis, ze je lepsi vracet iterator nez statickej list nebo dict. Pak zjstis ze celej takovej problem muzes namapovat na streamovaci system coz je jeste obecnejsi nez iterator. Ale to uz je lekce c.2.
Skouknul jsem tu prednasku a od zacatku mi to prislo, ze misto tridy proste jenom nekdo chtel napsat "helper" bo jak tam rikal "my heap toolkit". Rozhodne jsou tam jsou hezky veci a dik za sharing.
Tvuj problem je, ze ty vidis "jednoduchej" python script, to cos napsal za jako modelovej priklad pak vypada, ze to vyjde. Jenze pokud se bavis o necem vetsim nez je par funkci ktery nekde neco berou a nekam to davaj uz ti to nevyjde. Mas predpoklad, ze mas k dispozici bash cili to co nevybordelis ve svym pythonu zacnes bordelit ve svym bashi, kterej treba na windowsech neni, stejne jako existence systemd je dalsi "hard dependency". To mas jako kdyz chces bejt nekdo database agnostic nebo platform agnostic, ale zaroven reknes, ze to bezi jenom na linuxu s postgresem
To co ti chci rict, zes sis "vytvoril konkretni problem" a nasel sis na nej "konkretni reseni", ale zaroven tu pises, ze chces "obecny principy" a "realny svet". Navzajem se to vylucuje.
Kdyz delas skript tak delas skript a pokrocily "techniky/pristupy" v tom resi nemusis, protoze je to konkretni skrtip na reseni konkretniho problemu. Pokud mas aplikaci, ktera resi treba logovani a analyzu hovoru pro call centrum, muzes to napsat jako 300 skriptu ktery budes nejak importovat jeden do druhyho, nebo to muzes napsat jako clovek, kdy sice budes mit ve finale 500 souboru a 200 trid, ale aspon se to bude dat cist, testovat a rozsirovat a ne z toho delat nejaky spagety a dalsich 20 berlickovejch bashu okolo toho.
Jestli tady jde o premerovani udu a dogmatickou demagogii kde minimalismus je doktrina a zadna promena nebude mit vic jak tri pismenka, prosim jak je libo. Klidne ti i reknu ze mas pravdu a ze to tak je nejlepsi, kdyz te to potesi
Salut.