Seznam a proud jsou 2 zcela odlišné abstrakce, to, že zahrnují podobnou funkcionalitu, není důvodem, abych jeden z oněch konceptů řešil tím druhým.
Citace: BoneFlute 03. 04. 2017, 12:06:17Opravovat zobjektizovaný kód je dost na prd.Opravovat funkcionální kód mi přišlo mnohem snazší. Přijde mi, že v tom nemůžeš udělat takové špagety jako v OOP. Aktivněji ti v tom brání.No... ne že by v tom přímo bránil, ale v OOP je víc špagetovacích možností... třeba právě dědičnost. Už jsem viděl objekt, který se jmenoval nějak mainobject, jedinou vlastností bylo nějaký ID a všechny ostatní objekty byly jeho potomkem. V podobném duchu se to neslo dál, takže než se člověk prokousal přes x úrovní, aby zjistil, proč se to se.. kazí, tak měl skoro fousatý děti.
Opravovat zobjektizovaný kód je dost na prd.Opravovat funkcionální kód mi přišlo mnohem snazší. Přijde mi, že v tom nemůžeš udělat takové špagety jako v OOP. Aktivněji ti v tom brání.
Ano, to je takříkajíc ze života.Zatímco zvrtej použití funkce. Teď z fleku mě napadají jen tyto způsoby:- vracení hodnoty argumentem- side-efekt- vracení funkce (ne že by to bylo špatně, ale je to takovej kandidát na znečitelnění)- ob rekurze (funkce `a` volá `b` a ta volá `a`)
Citace: BoneFlute 03. 04. 2017, 13:51:30Ano, to je takříkajíc ze života.Zatímco zvrtej použití funkce. Teď z fleku mě napadají jen tyto způsoby:- vracení hodnoty argumentem- side-efekt- vracení funkce (ne že by to bylo špatně, ale je to takovej kandidát na znečitelnění)- ob rekurze (funkce `a` volá `b` a ta volá `a`)zdokumentované side-efekty mohou vést květší přehlednosti.
Citace: Kit 03. 04. 2017, 10:58:37Zrovna koukám na aplikaci napsanou v shellu "lineárně". Aby to nebylo v jednom souboru, je tam hromada "source", tedy includů jiných souborů. V objektech to určitě bude vypadat mnohem lépe, ale v podstatě tu aplikaci budu muset navrhnout znovu a pořádně. O nějakém "zobjektování" nemůže být řeč. V případě ponechání shellu by se jednalo spíš o "zfunkcionálnění".No a jsme u toho. OOP vyžaduje rozumný návrh a pokud se očekává, že aplikace poroste a budou jí přibývat nové funkcionality, musí se na to včas myslet. Tím nechci říct, že u procedurálního programování se špatný návrh ztratí, ale u OOP mně to přijde kritičtější. Ono takový dohledávání dědičností, dědiců, vyděděnců, nevlastních dětí a retardovaných bratranců, to je masakr.
Zrovna koukám na aplikaci napsanou v shellu "lineárně". Aby to nebylo v jednom souboru, je tam hromada "source", tedy includů jiných souborů. V objektech to určitě bude vypadat mnohem lépe, ale v podstatě tu aplikaci budu muset navrhnout znovu a pořádně. O nějakém "zobjektování" nemůže být řeč. V případě ponechání shellu by se jednalo spíš o "zfunkcionálnění".
zdokumentované side-efekty mohou vést květší přehlednosti.
Citace: gll 03. 04. 2017, 14:15:12zdokumentované side-efekty mohou vést květší přehlednosti.Nevěřím.Uznávám, že side-efekty někdy být musí. Ale měli by tě k tomu donutit technické omezení.Někdy by-design rezignuju u akumulátoru (logger apod.). Hlavně proto, že pracuju s lidma, kteří mají zatím jen imperativní a OOP výchovu a s kódem z takového myšlení vzniknuvším.
while(<>) { chomp; tr/ /_/; s/.*\.txt$/$&.old\n/; print if $&;}
takový kód se mnohem snadněji debuguje než několik vnořených funkcí a současně nemusím vymýšlet názvy proměnných pro mezivýsledky. IMHO je to lepší než různá threading makra v lispech.
Líný vývojář, který není schopen vymyslet název proměnné pro mezivýsledky, je největší pohromou pro ostatní vývojáře v týmu. Významně totiž zvyšuje počet WTF za hodinu.
Citace: Kit 03. 04. 2017, 15:58:45Líný vývojář, který není schopen vymyslet název proměnné pro mezivýsledky, je největší pohromou pro ostatní vývojáře v týmu. Významně totiž zvyšuje počet WTF za hodinu.Jde o eliminaci code noise. Naopak to snižuje počet WTF, protože je vynucováno použítí standartizovaných názvů.
getValueButLastCompilerVersionHasBugSoWeNeedAddTwoToResult()