Fórum Root.cz

Práce => Studium a uplatnění => Téma založeno: mukel 22. 08. 2019, 20:33:10

Název: Učebnice programovania
Přispěvatel: mukel 22. 08. 2019, 20:33:10
Ahojte.

Poraďte mi nejakú knihu/učebnicu programovania na programovací jazyk Java, ktorá ma programovať naozaj naučí. Mám knihu Naučte se myslet a programovat objektove od pána Pecinovského.
Kniha ma ale nebaví a nedobre sa mi číta, pretože všetko preberané ukazuje na objektoch, ktoré sa kreslia na plátno, ale ja kreslenie z duše nenavidím, tak ani to mi nie je po chuti. (Mám prečítané už 3/4 knihy, ale keďže všetko je predvádzané na kresliacich sa objektoch, nevykonávam cvičenia a nemám pocit, že moja vyučba napreduje.)

Za každú radu ďakujem.
Název: Re:Učebnice programovania
Přispěvatel: Cikáda 22. 08. 2019, 20:52:23
Nejprve by bylo fajn říct, jaké máš zkušenosti, respektive jak pokročilý jsi programátor (předpokládám, že začátečník..). Od toho se pak odvíjí volba knížky.

Pokud předpokládám správně, tak bych doporučil zvážit jiný jazyk. Proč sis vybral zrovna Javu?

P.S. - Ne vždycky budeš moct dělat to, co tě 100% baví. Ta cvičení bych si udělal.
Název: Re:Učebnice programovania
Přispěvatel: mukel 22. 08. 2019, 20:59:06
Nejprve by bylo fajn říct, jaké máš zkušenosti, respektive jak pokročilý jsi programátor (předpokládám, že začátečník..). Od toho se pak odvíjí volba knížky.

Pokud předpokládám správně, tak bych doporučil zvážit jiný jazyk. Proč sis vybral zrovna Javu?

P.S. - Ne vždycky budeš moct dělat to, co tě 100% baví. Ta cvičení bych si udělal.
Název: Re:Učebnice programovania
Přispěvatel: Filip Jirsák 22. 08. 2019, 21:02:19
Klasika je Učebnice jazyka Java od Pavla Herouta (https://www.kopp.cz/687-ucebnice-jazyka-java). Kdysi dávno tady vyšla recenze na první vydání (https://www.root.cz/clanky/ucebnice-jazyka-java-recenze/).
Název: Re:Učebnice programovania
Přispěvatel: Ravise 22. 08. 2019, 22:29:15
Mám prečítané už 3/4 knihy, ale keďže všetko je predvádzané na kresliacich sa objektoch, nevykonávam cvičenia a nemám pocit, že moja vyučba napreduje.

Ať už se ti to líbí nebo ne, ta cvičení tam jsou z nějakého důvodu. Nebude ti stačit to, že si knížku přečteš. Malovat se nenaučíš jen tím, že se budeš dívat na obrazy.
Název: Re:Učebnice programovania
Přispěvatel: mynona 23. 08. 2019, 08:18:46
Thinking in Java, eckel?
Název: Re:Učebnice programovania
Přispěvatel: Kit 23. 08. 2019, 09:05:41
Thinking in Java, eckel?

Jasný favorit, který vyšel i v češtině.
Název: Re:Učebnice programovania
Přispěvatel: gill 23. 08. 2019, 10:15:47
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Název: Re:Učebnice programovania
Přispěvatel: mynona 23. 08. 2019, 10:40:09

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.

C++ som z tejto série nikdy nečítal, ale viem, že ta Java bude isto jedna z najlepších učebníc programovania, ak to tak môžem nazvať, akú som kedy cital. Nie sú to riešené príklady, to je pravda, takze to nevtesnal na 50 stránok,no
Název: Re:Učebnice programovania
Přispěvatel: mukel 23. 08. 2019, 21:32:09
Na Thinking in Java od Eckela som myslel, len je už žiaľ nedostupná v kníhkupectvách...
Název: Re:Učebnice programovania
Přispěvatel: novotnyr 26. 08. 2019, 09:39:13
Skúste si pozrieť Head First Java od Kathy Sierra. Je to v angličtine, ale je to veľmi používateľsky prítulné.

Thinking In Java v češtine bola kedysi dobrá voľba. Žiaľ, už sa nedá zohnať (okrem knižníc) a český preklad je z druhej edície, ktorá nemá vlastnosti Javy 5. Medzitým totiž vyšla už štvrtá edícia.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 26. 08. 2019, 13:58:36
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.
Název: Re:Učebnice programovania
Přispěvatel: Idris 26. 08. 2019, 14:02:59
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.
Tak lepit prasokód může :)
Název: Re:Učebnice programovania
Přispěvatel: mynona 26. 08. 2019, 15:00:36
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

+1
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 26. 08. 2019, 15:14:10
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.
Tak lepit prasokód může :)
Nebo třeba může na nějaké juniorní pozici implementovat detailní návrhy od někoho jiného. To už si musí tazatel rozhodnout sám, jaké má ambice a na co se cítí. Nechtěl jsem házet nálepky, protože takový programátor nemusí být automaticky postrachem okolí.
Název: Re:Učebnice programovania
Přispěvatel: Kit 26. 08. 2019, 15:55:46
Na Thinking in Java od Eckela som myslel, len je už žiaľ nedostupná v kníhkupectvách...

Při troše snahy se dá najít a stáhnout v PDF, což je podle mne ještě praktičtější.
Název: Re:Učebnice programovania
Přispěvatel: Kit 26. 08. 2019, 16:00:55
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.
Název: Re:Učebnice programovania
Přispěvatel: mukel 26. 08. 2019, 16:43:16
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.


Práveže ja sa chcem naučiť naozaj programovať. Čiže by som zniesol aj tú filozofickú debatu. Chcem si nájsť takú učebnicu, ktorá ma naozaj naučí programovať.
Název: Re:Učebnice programovania
Přispěvatel: Zdenek Henek 26. 08. 2019, 18:17:41
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.

Právě tu filosofickou omáčku považuji za největší přínos této knihy. V podstatě je možné se podle ní naučit OOP i v C#, Pythonu nebo třeba v PHP.


Práveže ja sa chcem naučiť naozaj programovať. Čiže by som zniesol aj tú filozofickú debatu. Chcem si nájsť takú učebnicu, ktorá ma naozaj naučí programovať.
To není jen o knihách. Když jsem se učil základy, tak jsem měl jen jednu knihu a o internetu se mi tehdy mohlo jen zdát.

Druhá část je psát programy. Máte něco, co chcete zautomatizovat?
Používáte nějaký program a našel jste v něm chybu? Nahlašte ji autorovi a pokud má volně k dispozici zdrojáky, tak se podívejte, jak ji opravil, nebo mu pošlete návrh na opravu. Už jen tímto se naučíte používat různé nástroje.
git-github, nástroje k překladu zdrojáků a sestavení výsledného programu do balíčku ....

Pokud si chcete zkusit nějaké grafické kreace, tak například
https://processing.org/ je zajímavý způsob jak si hrát
https://natureofcode.com/ je kniha, kde můžete celkem rychle v jazyce  Processing vytvářet třeba gravitační modely ...

třeba https://processing.org/examples/smokeparticlesystem.html
Název: Re:Učebnice programovania
Přispěvatel: gill 26. 08. 2019, 22:47:46
Thinking in Java, eckel?

Četl jsem Myslíme v C++ od stejného autora, jestli se chceš jen naučit programovat, rozhodně nedoporučuju. Obsah obou dílů (asi 1000 stránek)  bez omáčky a filozofování by se snadno vešel do 50-ti stránek textu.
Akorát že ta omáčka a filosofování je ta náročnější část OOP. Samotné sekání tříd je už brnkačka. Ale programátor, co ignoruje tu filosofii okolo, se pro samostatnou práci moc nehodí.
Tak lepit prasokód může :)
Nebo třeba může na nějaké juniorní pozici implementovat detailní návrhy od někoho jiného. To už si musí tazatel rozhodnout sám, jaké má ambice a na co se cítí. Nechtěl jsem házet nálepky, protože takový programátor nemusí být automaticky postrachem okolí.

proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 27. 08. 2019, 10:06:17
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.
Název: Re:Učebnice programovania
Přispěvatel: gill 27. 08. 2019, 11:38:27
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 27. 08. 2019, 17:22:03
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.
Jo, akorát že +- ve stejném poměru jako ten ostatní kód.
Při návrhu jsou daleko důležitější věci, než minimalizace množství textu. Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna. Vždyť i každé rozhraní, které od sebe odděluje dva moduly, znamená hromadu psaní.
Název: Re:Učebnice programovania
Přispěvatel: gill 27. 08. 2019, 21:12:48
Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna.

https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
Název: Re:Učebnice programovania
Přispěvatel: Idris 27. 08. 2019, 22:38:39
proč autor detailního návrhu rovnou nenapíše ten kód? Nebylo by to rychlejší?
No nebylo. Na papír není třeba házet všechen boilerplate kód, na kterém není nic k vymýšlení. Zrovna Java v tomhle nějak extra úsporná není.

kdyby ten co to vymýšlí, psal rovnou kód, nadbytečný boilerplate by se zredukoval.
Jo, akorát že +- ve stejném poměru jako ten ostatní kód.
Při návrhu jsou daleko důležitější věci, než minimalizace množství textu. Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna. Vždyť i každé rozhraní, které od sebe odděluje dva moduly, znamená hromadu psaní.
Právě proto jsou nejlepší jazyky s minimem balastu.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 28. 08. 2019, 12:32:48
Spousta toho "balastu" tam není nezbytně nutná teď, ale je to investice do budoucna.

https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
Požadavky se mění nepříjemně často. Takže je rozumné od začátku psát tak, aby pozdější změny tolik nebolely. A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.
Název: Re:Učebnice programovania
Přispěvatel: Kit 28. 08. 2019, 13:37:37
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
Požadavky se mění nepříjemně často. Takže je rozumné od začátku psát tak, aby pozdější změny tolik nebolely. A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.

Návrhové vzory naopak zkracují kód. Stačí vybrat ten správný.
Název: Re:Učebnice programovania
Přispěvatel: gill 28. 08. 2019, 13:50:18
YAGNI je přece o nadbytečné funkcionalitě. Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
podle wikipedie je autorem té zkratky Ron Jeffries.

mimo jiné citují tento zdroj https://ronjeffries.com/xprog/articles/practices/pracnotneed/ , kde se píše

Citace
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.

Ne o tom, že ta požadovaná funkcionalita musí být implementovaná tak minimalisticky, jak to jen jde.
v tom článku na wikipedii se přímo píše
Citace
YAGNI is a principle behind the XP practice of "do the simplest thing that could possibly work" (DTSTTCPW).

A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.

je sporné, jestli jsou osvědčené
Název: Re:Učebnice programovania
Přispěvatel: Kit 28. 08. 2019, 15:12:30
A všechny ty návrhové vzory a další osvědčené praktiky prostě znamenají kód navíc.
je sporné, jestli jsou osvědčené

Osvědčené jsou. Jen se často stává, že někdo vybere vzor, který se pro požadovaný účel nehodí a dělá tak návrhovým vzorům ostudu.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 28. 08. 2019, 16:24:58
mimo jiné citují tento zdroj https://ronjeffries.com/xprog/articles/practices/pracnotneed/ , kde se píše

Citace
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.
Tak k téhle citaci mám dost zásadní výhrady. Asi tuším, co chtěl autor říct, ale řekl to IMO dost extrémním způsobem.

Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Třída není jenom náhodný shluk proměnných a funkcí. Je to balík, který je úzce provázaný dohromady. Pokud má ten balík nějakou vlastnost, kterou dává smysl číst zvenku, pak dostane getter. Pokud má tuhle vlastnost smysl z venku i měnit, pak dostane i setter. Jestli té vlastnosti odpovídá nějaká proměnná je úplně jedno. U takhle psaných tříd je samotná existence setteru užitečná dokumentace. Rozhodně užitečnější, než existence nějaké podobně pojmenovaného membra. Odhadovat, jestli nějaká metoda chybí protože není rozumné danou proměnnou měnit jen tak, nebo to jenom zatím nebylo potřeba, nemusí být až taková sranda.

Souhlasím s tím, že není dobré psát zbytečný kód. S čím nesouhlasím je granularita. Ono co vlastně je nebo není potřeba není samotný getter nebo jedna třída. Potřeba je nějaká funkce celého systému.
Název: Re:Učebnice programovania
Přispěvatel: Kit 28. 08. 2019, 16:51:43
Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Ve svých aplikacích gettery ani settery nepoužívám. Proč? Jednoduše nepotřebuji žádný přístup ke členským proměnným.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 28. 08. 2019, 17:09:10
Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Ve svých aplikacích gettery ani settery nepoužívám. Proč? Jednoduše nepotřebuji žádný přístup ke členským proměnným.
Ani v obecnější podobě, jakou jsem popisoval v dalším odstavci? Zpráva, která se objektu ptá na nějakou hodnotu nebo stav, je v vlastně taky getter. Jestli tomu vevnitř odpovídá nějaká členská proměnná nebo ne by přece mělo být zvenku úplně jedno, ne? Osobně beru jako getter cokoliv, co se objektu na něco ptá a při pohledu zvenčí nijak neovlivňuje jeho stav.
Název: Re:Učebnice programovania
Přispěvatel: Ondra Satai Nekola 28. 08. 2019, 17:10:44
Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Ve svých aplikacích gettery ani settery nepoužívám. Proč? Jednoduše nepotřebuji žádný přístup ke členským proměnným.

(je tu ještě?)
Název: Re:Učebnice programovania
Přispěvatel: Kit 28. 08. 2019, 19:23:01
Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.
Ve svých aplikacích gettery ani settery nepoužívám. Proč? Jednoduše nepotřebuji žádný přístup ke členským proměnným.
Ani v obecnější podobě, jakou jsem popisoval v dalším odstavci? Zpráva, která se objektu ptá na nějakou hodnotu nebo stav, je v vlastně taky getter. Jestli tomu vevnitř odpovídá nějaká členská proměnná nebo ne by přece mělo být zvenku úplně jedno, ne? Osobně beru jako getter cokoliv, co se objektu na něco ptá a při pohledu zvenčí nijak neovlivňuje jeho stav.

V obecnější podobě používám jako getter metodu toString() a jako setter konstruktor. Jinak se objektu na nic neptám, protože mě stav jeho atributů nezajímá.
Název: Re:Učebnice programovania
Přispěvatel: uetoyo 28. 08. 2019, 21:22:03
Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.
Ve svých aplikacích gettery ani settery nepoužívám. Proč? Jednoduše nepotřebuji žádný přístup ke členským proměnným.
Ani v obecnější podobě, jakou jsem popisoval v dalším odstavci? Zpráva, která se objektu ptá na nějakou hodnotu nebo stav, je v vlastně taky getter. Jestli tomu vevnitř odpovídá nějaká členská proměnná nebo ne by přece mělo být zvenku úplně jedno, ne? Osobně beru jako getter cokoliv, co se objektu na něco ptá a při pohledu zvenčí nijak neovlivňuje jeho stav.

V obecnější podobě používám jako getter metodu toString() a jako setter konstruktor. Jinak se objektu na nic neptám, protože mě stav jeho atributů nezajímá.

A jak to vlastně děláš? Mějme třeba objekt `Color` (RGB). Určitě dělám něco blbě, ale já bych tam viděl nějaký getter či accessor, to už je jedno jak to nazvu.
Název: Re:Učebnice programovania
Přispěvatel: gill 29. 08. 2019, 08:54:50
mimo jiné citují tento zdroj https://ronjeffries.com/xprog/articles/practices/pracnotneed/ , kde se píše

Citace
You find that you need a getter for some instance variable. Fine, write it. Don’t write the setter because “we’re going to need it”. Don’t write getters for other instance variables because “we’re going to need them”.
Tak k téhle citaci mám dost zásadní výhrady. Asi tuším, co chtěl autor říct, ale řekl to IMO dost extrémním způsobem.

Účelem getterů a setterů není samotný přístup k členským proměnným. Jejich účelem je aby zvenku nebylo poznat, jestli nějaká taková proměnná vůbec existuje.

Třída není jenom náhodný shluk proměnných a funkcí. Je to balík, který je úzce provázaný dohromady. Pokud má ten balík nějakou vlastnost, kterou dává smysl číst zvenku, pak dostane getter. Pokud má tuhle vlastnost smysl z venku i měnit, pak dostane i setter. Jestli té vlastnosti odpovídá nějaká proměnná je úplně jedno. U takhle psaných tříd je samotná existence setteru užitečná dokumentace. Rozhodně užitečnější, než existence nějaké podobně pojmenovaného membra. Odhadovat, jestli nějaká metoda chybí protože není rozumné danou proměnnou měnit jen tak, nebo to jenom zatím nebylo potřeba, nemusí být až taková sranda.

Souhlasím s tím, že není dobré psát zbytečný kód. S čím nesouhlasím je granularita. Ono co vlastně je nebo není potřeba není samotný getter nebo jedna třída. Potřeba je nějaká funkce celého systému.

nechtěl jsem začít diskuzi o getterech a setterech, jen jsem chtěl ukázat, že to heslo YAGNI na wikipedii se týká psaní nadbytečného kódu, ne funkcionality.
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 29. 08. 2019, 09:55:36
nechtěl jsem začít diskuzi o getterech a setterech, jen jsem chtěl ukázat, že to heslo YAGNI na wikipedii se týká psaní nadbytečného kódu, ne funkcionality.
Nemusíme vést diskuzi konkrétně o getterech, můžeme přejít do trochu obecnější roviny. :)

Problém s YAGNI (a to samé platí pro jakékoliv jiné jednoduché a univerzální pravidlo) je v tom, že je složité ho interpretovat a aplikovat. Třeba co přesně je ten "nadbytečný kód"? Ty gettery jsem rozepsal právě abych ilustroval že ta nadbytečnost rozhodně není nějaký přímočarý koncept. Dost záleží na kontextu a zkušenostech.

Kód není jen k tomu aby se přeložil nebo vykonal. Slouží i ke komunikaci s jinými vývojáři. A na základě zkušeností počítám jako jiného vývojáře i sebe po pár měsících. Dokonce bych si troufl tvrdit, že když píšeme kód, tak je to primárně pro lidi a ne pro stroj.

Doporučuju kouknout na https://www.youtube.com/watch?v=kYVxGyido9g&t=1s (https://www.youtube.com/watch?v=kYVxGyido9g&t=1s) Je to sice o C++, ale ten princip je daleko obecnější a není omezený jen na jednotlivá klíčová slova. Spousta věcí v kódu nemá svůj protiklad. Buď tam je, nebo není. A pokud věci píšu když dávají logicky smysl a ne jenom, když je zrovna potřebuju, pak každá taková chybějící věc je informace pro další vývojáře. Pokud budu všechno psát jen ve chvíli, kdy to bude opravdu nutné, tak budoucí čtenář kódu o tuhle informaci přijde.
Název: Re:Učebnice programovania
Přispěvatel: borekz 29. 08. 2019, 13:18:01
Třeba co přesně je ten "nadbytečný kód"?
Např. implementace nepožadovaných funkcí. Kromě one-man-show firem není programátor ta správná osoba, která by si měla vymýšlet zadání. "Prozíravý" programátor myslí "dopředu" a zaprasí kód nadbytečným obtížně udržovatelným balastem, aby byl "rozšiřitelný". Až po dlouhé době přijde nový požadavek, nejen že ten balast nic nepomůže, protože programátor není orákulum, ale ještě to zkomplikuje, protože je víc kódu k přepisování.
Název: Re:Učebnice programovania
Přispěvatel: Arthnon 29. 08. 2019, 14:15:17
Upřímně Vám doporučuji vykašlat se na knížky a pořídit si nějaké online kurzy. Osobně jsem se ke knížce nedokopal, ale online kurzy jsou výborné.
https://www.udemy.com/java-the-complete-java-developer-course/
Při slevách za 300,-Kč, 80h contentu, cvičení, forum, kde opravdu poradí. Nemohu nic jen doporučit. A neustále tam přidává nový content z nových verzí javy, takže to máte vlastně na delší dobu. :-)
Název: Re:Učebnice programovania
Přispěvatel: Jiří Havel 29. 08. 2019, 14:25:14
Např. implementace nepožadovaných funkcí. Kromě one-man-show firem není programátor ta správná osoba, která by si měla vymýšlet zadání.
Pokud je tou "funkcí" myšlena nějaká uživatelem viditelná funkčnost programu, pak naprostý souhlas. Pokud to má znamenat funkci nebo metodu v kódu, pak nesouhlasím. A do jakých funkcí je ten program uvnitř rozložený v zadání obvykle nebývá.
Citace
"Prozíravý" programátor myslí "dopředu" a zaprasí kód nadbytečným obtížně udržovatelným balastem, aby byl "rozšiřitelný". Až po dlouhé době přijde nový požadavek, nejen že ten balast nic nepomůže, protože programátor není orákulum, ale ještě to zkomplikuje, protože je víc kódu k přepisování.
Prozíravý programátor myslí dopředu hlavně na to, že po něm ten kód bude někdo číst. A ten čtenář bude muset zrekonstruovat spoustu předchozích myšlenkových postupů. Když píšu kód, tak nepíšu jednotlivé funkce ve vakuu. Navrhuju celé třídy. Tady mi dává smysl udělat takovou třídu komplet, ne jenom nezbytné části. Pak čtenář nemusí dedukovat, jestli nějaká metoda nedává smysl, nebo jenom nebyla třeba.

Jak už jsem psal, jde mi o granularitu. Nebudu psát hromadu wrapperů a interfaců jen kvůli budoucí rozlišitelnosti. Ale taky se nebudu bránit přidat pár metod do třídy, kde dávají smysl. A psal jsem to jako reakci na příspěvek, který to bral stylem "Ani jediný setter nazmar". To mi přijde spíš kontraproduktivní.