Zdroje k rozvoji OOP myšlení

SB

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #210 kdy: 03. 04. 2017, 12:49:12 »
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.


Re:Zdroje k rozvoji OOP myšlení
« Odpověď #211 kdy: 03. 04. 2017, 13:03:48 »
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.

Whatever. V realu tohle vazne je ten posledni problem, co te pri psani v Jave trapi, protoze jedno z druheho umis na jedno code completion...

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #212 kdy: 03. 04. 2017, 13:51:30 »
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í.
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.

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`)

gll

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #213 kdy: 03. 04. 2017, 14:15:12 »
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`)

zdokumentované side-efekty mohou vést květší přehlednosti.

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #214 kdy: 03. 04. 2017, 14:31:32 »
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`)

zdokumentované side-efekty mohou vést květší přehlednosti.

Az do okamziku, kdy se rozjdede dokumentace a kod. Takze zhruba po dobu jednoho tydne realneho vyvoje.


Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #215 kdy: 03. 04. 2017, 14:37:41 »
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í".
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.

V žádném případně se však nesmí optimalizovat předčasně. Pokud se udělá dědičnost správně, nebývá s tím problém - stačí dodržet LSP. Mnohem větší hrůzu mívám z dlouhatánských tříd s hromadou veřejných metod a protected atributů.

Jakmile má třída > 4 atributy, je okamžitě kandidátem na refaktorování.

BoneFlute

  • *****
  • 1 983
    • Zobrazit profil
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #216 kdy: 03. 04. 2017, 15:03:04 »
zdokumentované 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.

gll

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #217 kdy: 03. 04. 2017, 15:20:15 »
zdokumentované 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.

side efekty mohou být alternativou k vnořování funkcí. V perlu mohu napsat:

Kód: [Vybrat]
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.

Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #218 kdy: 03. 04. 2017, 15:58:45 »
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.

gll

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #219 kdy: 03. 04. 2017, 16:02:42 »
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.

Jde o eliminaci code noise. Naopak to snižuje počet WTF, protože je vynucováno použítí standartizovaných názvů.

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #220 kdy: 03. 04. 2017, 16:11:45 »
Pokud mne mel ten kus kodu presvedcit o skvelosti sideefektu, tak se mu to nepodarilo...

Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #221 kdy: 03. 04. 2017, 16:18:53 »
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.

Jde o eliminaci code noise. Naopak to snižuje počet WTF, protože je vynucováno použítí standartizovaných názvů.

Za code noise považuji hlavně komentáře, které překladač/interpretr ignoruje. Za nejlepší komentáře považuji správnou volbu názvů. Dodávají kódu sémantiku.

javaman ()

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #222 kdy: 03. 04. 2017, 17:04:10 »
getValueButLastCompilerVersionHasBugSoWeNeedAddTwoToResult()

Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #223 kdy: 03. 04. 2017, 17:26:11 »
getValueButLastCompilerVersionHasBugSoWeNeedAddTwoToResult()

To má být vtip? Obvykle si vystačím s jedním či maximálně dvěma slovy.

javaman ()

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #224 kdy: 03. 04. 2017, 17:42:00 »
A kam dáš dočasné detaily? Přece bys nepoužíval ohavné komentáře, které vše zničí :o