Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Jiří Havel

Stran: 1 ... 16 17 [18] 19 20 ... 22
256
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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í.

257
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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 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.

258
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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.

259
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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.

260
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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.

261
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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í.

262
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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í.

263
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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í.

264
Studium a uplatnění / Re:Práce v NIC.CZ
« kdy: 26. 08. 2019, 14:41:58 »
taky mi nabízeli práci, v linuxu, jako platem a benefity se bohužel dostávají na takový průměr, možná horší průměr komerční sféry.
Průměr je ještě dobrý. Vždyť pokud je plat omezený zespoda, pak většina lidí musí už z principu brát podprůměr.
Za zajímavou a příjemnou práci se často nedávají těžké prachy ani v té komerční sféře. To spíš za něco, co by za levno nikdo dělat nechtěl.

265
Studium a uplatnění / Re:Učebnice programovania
« kdy: 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í.

266
@238222827

"Ano, protože to co tvrdí nemá oporu v realitě pracovního trku ČR roku 2019."

Proč přesně? A tím přesně myslím přesně, žádné když, taky, mohlo či podobně, jako ....
Na konkrétní detaily se nemá cenu ptát. Z kávové sedliny tu přece věštíme všichni. ;)

267
Já bych řekl, že ty drbny a chlapi z hospod nedrbou se záměrem někomu uškodit.

Zákon nehovoří o záměru, ale o způsobilosti uškodit.
Asi se v tom nebudu dál patlat. Původní dotaz byl stejně o tom, že tazatel kvůli těm pomluvám nemůže najít práci. Takže ta způsobilost uškodit je naprosto jasná.

268
No však o tohle přesně mi jde. Dostanu nižší sazbu. Je to polehčující okolnost, ale pořád se nějaký trestný čin stal. Vy jste tady psal, že pokud těm telefonátům nikdo nebude věřit, tak to pomluva není.

Však za tím si stojím. Pokud tomu nikdo nebude věřit, je to tvrzení, které není způsobilé ublížit vůbec, natož vážným způsobem (jak vyžaduje zákon).

To by jinak polovina drben a polovina chlapů z hospod musela být trestána ob den :).
Já bych řekl, že ty drbny a chlapi z hospod nedrbou se záměrem někomu uškodit.

269
Taky to není pravda.
Pokud byste to dělal záměrně a nic se nikomu nestane, dostanete nižší sazbu.
No však o tohle přesně mi jde. Dostanu nižší sazbu. Je to polehčující okolnost, ale pořád se nějaký trestný čin stal. Vy jste tady psal, že pokud těm telefonátům nikdo nebude věřit, tak to pomluva není.
... Takže: stejná informace (= podle Vás "pomluva"), ale ve skutečnosti první pomluvou je, druhé pomluvou není.

Citace
V tomto případě nejde o pomluvu, protože i Váš táta věděl, že se jedná o konkurenční praktiku.

270
[A to samé jsou ty telefonáty, ke kterým jste tuhle analogii dával. Prostě někdo šíří lži a chce jimi někoho poškodit. To, jestli má oběť kliku a ten lhář je provařený by snad nemělo mít až tak zásadní vliv.

Ve skutečnosti to má vliv.

Představte si, že couváte s autem a přehlédnete chodce. V rychlosti cca 3 km/h se s ním střetnete.

Pokud to bude mladý člověk, řekne jen "au" a uskočí.
Pokud bude starší, možná ztratí rovnováhu a udělá si modřinu, ale ta určitě nevyžádá týden léčení (a tedy není to trestný čin).
Pokud se střetnete se staříkem, který má osteoporózu, a ten si při pádu na zem zlomí krček stehenní kosti, zalehne na dva měsíce v nemocnici - a možná už nikdy nezačne znovu chodit, možná dokonce na lůžku po půl roce zemře. V takovém případě budete souzen za ublížení na zdraví (s následkem smrti) z nedbalosti.

Tedy: stejná chyba (nekoukl jste se dobře do zrcátka), ale podle situace úplně jiný postih.
Vybíráte si opravdu zajímavé analogie.

Ten vylhaný telefonát se přece nestal proto, že se dotyčný špatně podíval do telefonního seznamu. A pokud budu _cíleně_ najíždět na lidi, tak bych to měl schytat i kdyby všichni zvládli uskočit.

Od začátku se tu snad bavíme o _úmyslném_ jednání jehož cílem je někoho poškodit. Ta analogie by se hodila tak na situaci, kdyby ta pomluva začala jako špatně pochopený vtip. Ale tohle jsem tu nezaznamenal ani náznakem.

Stran: 1 ... 16 17 [18] 19 20 ... 22