Zdroje k rozvoji OOP myšlení

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #255 kdy: 04. 04. 2017, 11:04:44 »
A k cemu ze to potrebujes ty sideefekty? Vzdyt by v principu to same slo bez pomocnych promenych a bez vedlejsich efektu prostym zretezenim volani nebo nejakou variaci na unixovou rouru...

je to sekvenční kód. Mohu ho krokovat v debuggeru.

A to by snad jinak neslo? Slo, kdybys nemel spatny debugger. (Nemluvim ani o tom, ze optimalizace kodu na pouziti v debuggeru neni nejspis to prave bananove.)


Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #256 kdy: 04. 04. 2017, 11:10:02 »
A k cemu ze to potrebujes ty sideefekty? Vzdyt by v principu to same slo bez pomocnych promenych a bez vedlejsich efektu prostym zretezenim volani nebo nejakou variaci na unixovou rouru...

je to sekvenční kód. Mohu ho krokovat v debuggeru.

Možná se dá krokovat, což nepovažuji za významnou výhodu, ale s testovatelností to bude asi trochu horší.

jpu

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #257 kdy: 04. 04. 2017, 12:59:11 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

shogun

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #258 kdy: 04. 04. 2017, 13:33:43 »

shogun

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #259 kdy: 04. 04. 2017, 13:38:39 »
už se to tady ve fóru několikrát řešilo...
čistě objektově:
http://sdmeta.gforge.inria.fr/FreeBooks/
http://files.pharo.org/books/

skripta od Merunky

https://en.wikipedia.org/wiki/Design_Patterns
http://www.dofactory.com/net/design-patterns

pokud chceš rovnou procvičit + videa + příklady a vysvětlení je pěkný kurz http://files.pharo.org/mooc/


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #260 kdy: 04. 04. 2017, 13:48:27 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?
Programátoři obecně neumí OOP. A ti co se prsatí, že ano, těm se vyhejbej.

Kiwi

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #261 kdy: 04. 04. 2017, 13:54:13 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #262 kdy: 04. 04. 2017, 14:13:08 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.
Cocoa je skvělý příklad dobrého návrhu, bohužel se s tím člověk ale setká jen na macOS (gnustep je opruz) a navíc to chce ObjC, protože verze pro Swift (hlavně na Linuxu) je galimatyáš. Qt vskutku moc elegantní není (jako nic v C++). .NET bych neviděl tak černě, to je jen běhové prostředí (a jeho základní knihovna není moc OOP). Pro lidi znalé céčka bych doporučil ještě CoreFoundation, to je objektové a multiplatformní (a ukazuje, jak psát objektově v C).

jpu

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #263 kdy: 04. 04. 2017, 15:28:00 »
uprednostnujete vyuzivanie switch-case, alebo polymorfizmu?

YF

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #264 kdy: 04. 04. 2017, 15:28:13 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.
Cocoa je skvělý příklad dobrého návrhu, bohužel se s tím člověk ale setká jen na macOS (gnustep je opruz) a navíc to chce ObjC, protože verze pro Swift (hlavně na Linuxu) je galimatyáš. Qt vskutku moc elegantní není (jako nic v C++). .NET bych neviděl tak černě, to je jen běhové prostředí (a jeho základní knihovna není moc OOP). Pro lidi znalé céčka bych doporučil ještě CoreFoundation, to je objektové a multiplatformní (a ukazuje, jak psát objektově v C).

zboj - co z c++ knihoven (navrh / kod / api) stoji z tohodle pohledu za prostudovani? QT se mi docela libi z hlediska API ... je to pragmaticky - ty templaty pod tim - v tom sem se zatim raci nevrtal ... boost uz je horsi a vubec proste .... v c++ snad ani hezkej design delat nejde ne?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #265 kdy: 04. 04. 2017, 15:37:32 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.
Cocoa je skvělý příklad dobrého návrhu, bohužel se s tím člověk ale setká jen na macOS (gnustep je opruz) a navíc to chce ObjC, protože verze pro Swift (hlavně na Linuxu) je galimatyáš. Qt vskutku moc elegantní není (jako nic v C++). .NET bych neviděl tak černě, to je jen běhové prostředí (a jeho základní knihovna není moc OOP). Pro lidi znalé céčka bych doporučil ještě CoreFoundation, to je objektové a multiplatformní (a ukazuje, jak psát objektově v C).

zboj - co z c++ knihoven (navrh / kod / api) stoji z tohodle pohledu za prostudovani? QT se mi docela libi z hlediska API ... je to pragmaticky - ty templaty pod tim - v tom sem se zatim raci nevrtal ... boost uz je horsi a vubec proste .... v c++ snad ani hezkej design delat nejde ne?
Jo, to píšu, v C++ to moc elegantně vůbec nejde, ovšem to je trochu subjektivní, "krása" kódu nijak objektivně hodnotit nejde. K hlubšímu zkoumání bych asi doporučil jen STL (a potažmo boost), to je idiomatický kód v C++. A pak možná základní (obecné) třídy clangu, tam je několik velmi hezkých vychytávek ohledně dynamického volání.

YF

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #266 kdy: 04. 04. 2017, 15:45:16 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.
Cocoa je skvělý příklad dobrého návrhu, bohužel se s tím člověk ale setká jen na macOS (gnustep je opruz) a navíc to chce ObjC, protože verze pro Swift (hlavně na Linuxu) je galimatyáš. Qt vskutku moc elegantní není (jako nic v C++). .NET bych neviděl tak černě, to je jen běhové prostředí (a jeho základní knihovna není moc OOP). Pro lidi znalé céčka bych doporučil ještě CoreFoundation, to je objektové a multiplatformní (a ukazuje, jak psát objektově v C).

zboj - co z c++ knihoven (navrh / kod / api) stoji z tohodle pohledu za prostudovani? QT se mi docela libi z hlediska API ... je to pragmaticky - ty templaty pod tim - v tom sem se zatim raci nevrtal ... boost uz je horsi a vubec proste .... v c++ snad ani hezkej design delat nejde ne?
Jo, to píšu, v C++ to moc elegantně vůbec nejde, ovšem to je trochu subjektivní, "krása" kódu nijak objektivně hodnotit nejde. K hlubšímu zkoumání bych asi doporučil jen STL (a potažmo boost), to je idiomatický kód v C++. A pak možná základní (obecné) třídy clangu, tam je několik velmi hezkých vychytávek ohledně dynamického volání.
kk - mrknu - dik

Kit

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #267 kdy: 04. 04. 2017, 15:49:53 »
uprednostnujete vyuzivanie switch-case, alebo polymorfizmu?

Polymorfismus. Je mnohem jednodušší na údržbu.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Zdroje k rozvoji OOP myšlení
« Odpověď #268 kdy: 04. 04. 2017, 15:50:12 »
Mna by skor zaujimala jedna vec, ze ako viete posudit, ci to, co mate naprogramovane, je dobre, splna OOP alebo sa to aspon k OOP priblizuje. Vedel by niekto popr. odporucit nejaku knizku o OOP?

To je těžké. Jeden nějakou doporučí a další ji zkritizují. Mně je třeba blízký ten přístup jaký má Alan Kay, u nás, co by autory literatury, reprezentovaný zejména pány Čadou a Merunkou.

Jestli je to dobře naprogramované, nebo raději bych použil slovo navržené... to se pozná podle toho, jestli při přidávání nebo úpravě nějaké funkcionality uvažuješ o té funkcionalitě, nebo většinu času zabere dumání, jak k sakru tu prkotinu do toho nacpat, aniž by se to celé muselo překopat nebo aniž by to byla nějaká prasárna. S tím druhým jsem se setkal u většiny projektů v C++, C# nebo Javě.
OOP má obvykle jednu nepříjemnou vlastnost, totiž tu, že násobí jakékoli nešikovnosti, vzniklé v době návrhu architektury. A řekl bych, že ten statičtější přístup (C++, Java) je násobí rozhodně větším koeficientem než ten dynamičtější (Objective C, Ruby).

Osobně považuji za dobře navržený objektový systém např. framework Cocoa. Sám jsem s tím dělal jen párkrát, ale dělalo se mi s tím opravdu velmi příjemně. Lidé, co jsem potkal a měli více příležitostí s tím pracovat, si to ale také velice chválili. Nebo třeba Pharo. Takže inspirace, jak se to dá dobře udělat, bych hledal tady. Když to porovnám třeba s Qt nebo .NET, tak mi to připadá mnohem elegantnější.
Cocoa je skvělý příklad dobrého návrhu, bohužel se s tím člověk ale setká jen na macOS (gnustep je opruz) a navíc to chce ObjC, protože verze pro Swift (hlavně na Linuxu) je galimatyáš. Qt vskutku moc elegantní není (jako nic v C++). .NET bych neviděl tak černě, to je jen běhové prostředí (a jeho základní knihovna není moc OOP). Pro lidi znalé céčka bych doporučil ještě CoreFoundation, to je objektové a multiplatformní (a ukazuje, jak psát objektově v C).

zboj - co z c++ knihoven (navrh / kod / api) stoji z tohodle pohledu za prostudovani? QT se mi docela libi z hlediska API ... je to pragmaticky - ty templaty pod tim - v tom sem se zatim raci nevrtal ... boost uz je horsi a vubec proste .... v c++ snad ani hezkej design delat nejde ne?
Jo, to píšu, v C++ to moc elegantně vůbec nejde, ovšem to je trochu subjektivní, "krása" kódu nijak objektivně hodnotit nejde. K hlubšímu zkoumání bych asi doporučil jen STL (a potažmo boost), to je idiomatický kód v C++. A pak možná základní (obecné) třídy clangu, tam je několik velmi hezkých vychytávek ohledně dynamického volání.
kk - mrknu - dik
Není zač. Jinak k tomuto bych doporučil spíše publikace Suttera a Meyerse, já přestal trendy v C++ podrobně sledovat někde u C++11 a teď už skoro máme C++17, takže je možné, že něco opravdu dobrého a doporučeníhodného mi uniklo.

gll

Re:Zdroje k rozvoji OOP myšlení
« Odpověď #269 kdy: 04. 04. 2017, 17:06:02 »
A k cemu ze to potrebujes ty sideefekty? Vzdyt by v principu to same slo bez pomocnych promenych a bez vedlejsich efektu prostym zretezenim volani nebo nejakou variaci na unixovou rouru...

je to sekvenční kód. Mohu ho krokovat v debuggeru.

Možná se dá krokovat, což nepovažuji za významnou výhodu, ale s testovatelností to bude asi trochu horší.

Testovatelnost je není problém. Side efekty jdou uzavřít dovnitř funkce. Právě díky dynamickému scopování.

Kód: [Vybrat]
use strict;
use Test;


sub modify_line {
    my ($param) = @_;
    local $_ = $_ if defined wantarray;
    $_ = $param if $param;
    chomp;
    tr/ /_/;
    s/.*\.txt$/$&.old\n/;
    $_;
}

BEGIN {plan tests => 5}


$_ = "original value";
ok(modify_line "hello.txt", "hello.txt.old\n");
ok($_, "original value"); # $_ unchanged
$_ = "hello.txt";
ok(modify_line, "hello.txt.old\n");
modify_line;
ok($_ , "hello.txt.old\n");
modify_line "hello.txt";
ok($_, "hello.txt.old\n");

funkce modify line funguje se side efektem, pouze pukud po ní volající nechce žádnou návratovou hodnotu. V tom případě uloží výsledek do proměnné $_.