Typový system versus unittesty

Gődel

Re:Typový system versus unittesty
« Odpověď #315 kdy: 21. 06. 2018, 16:07:12 »
Pamatuju si, jak jsem kolegovi vysvětloval, proč je jako docela fajn v konstruktoru testovat vstupní hodnoty; že jinak to balit do třídy nemá smysl. Strašně se kroutil. Je docela chytrý, ale celou svou inteligenci vyčerpal na to, aby mi dokázalmě uhádal, že to tak není.
Jak kdy. Pokud potřebuji pozdní vazbu, tak nevím, co bych v tom konstruktoru testoval.
Nějak to pleteš. Míchat konstruktory a pozdní vazbu chce hodně divokou představivost.
Ve chvíli, kdy vytvořím objekt, ještě nevím, které metody budu volat a které atributy mám validovat. Validuje se až při zavolání konkrétní metody.
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože na zavolání metody “chcípni” (pure OO ekšperti by řekli poslání zprávy “chcípni”) to nemá vliv? Co zásada “fail early”? To “early” taky může znamenat před pádem letadla nebo výbuchem elektrárny.


v

Re:Typový system versus unittesty
« Odpověď #316 kdy: 21. 06. 2018, 16:09:49 »
takové fajne vlákno to bylo :(

Kit

Re:Typový system versus unittesty
« Odpověď #317 kdy: 21. 06. 2018, 16:17:14 »
Ve chvíli, kdy vytvořím objekt, ještě nevím, které metody budu volat a které atributy mám validovat. Validuje se až při zavolání konkrétní metody.
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože na zavolání metody “chcípni” (pure OO ekšperti by řekli poslání zprávy “chcípni”) to nemá vliv? Co zásada “fail early”? To “early” taky může znamenat před pádem letadla nebo výbuchem elektrárny.

Co když ten věk vůbec nebudu potřebovat a v konstruktoru není uveden? Proč bych ho měl validovat?

"fail early" je cestou do pekel, protože narušuje atomicitu operací. Co když mezi validací a použitím hodnoty mi ji nějaké jiné vlákno změní? Výjimky pro tento účel poslouží mnohem lépe.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #318 kdy: 21. 06. 2018, 16:33:17 »
Jak kdy. Pokud potřebuji pozdní vazbu, tak nevím, co bych v tom konstruktoru testoval.
Hele, založ si vlastní vlákno!

Re:Typový system versus unittesty
« Odpověď #319 kdy: 21. 06. 2018, 16:44:11 »
Šel jsem oběma cestama. A musím říct, že napsat aplikaci, kde spolehlivost bude stát jen na testech je peklo.
Nějak mne nenapadá, v čem by se měla lišit dovednost psát testy od dovednosti programovat.

Častým projevem toho nechápání bývá paušální odsuzování – a je jedno, zda PHP, JavaScriptu, Javy nebo C.


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #320 kdy: 21. 06. 2018, 17:03:42 »
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože...

Ono hodně dělají zvyky z těch statických typu. Pro nás už jen představa existence nevalidního objektu je neprijatelná.

V případě netypovych jazyku kde to může kdykoliv kdekoliv chcipnout - to tolik neprozivaji.

Gődel

Re:Typový system versus unittesty
« Odpověď #321 kdy: 21. 06. 2018, 17:12:42 »
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože...
Ono hodně dělají zvyky z těch statických typu. Pro nás už jen představa existence nevalidního objektu je neprijatelná.

V případě netypovych jazyku kde to může kdykoliv kdekoliv chcipnout - to tolik neprozivaji.
To už je o zvyku a disciplíně bez ohledu na jazyk. Prasit jde i v Haskellu.

v

Re:Typový system versus unittesty
« Odpověď #322 kdy: 21. 06. 2018, 17:13:44 »
Častým projevem toho nechápání bývá paušální odsuzování – a je jedno, zda PHP, JavaScriptu, Javy nebo C.
vyloučil jste možnost, že ten nechápající jste vy?

Kit

Re:Typový system versus unittesty
« Odpověď #323 kdy: 21. 06. 2018, 17:27:06 »
Častým projevem toho nechápání bývá paušální odsuzování – a je jedno, zda PHP, JavaScriptu, Javy nebo C.
vyloučil jste možnost, že ten nechápající jste vy?

Jistě, Haskell tady přece nikdo neodsuzuje. Není lepší ani horší než ostatní jazyky, je prostě jiný.

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Typový system versus unittesty
« Odpověď #324 kdy: 21. 06. 2018, 21:10:59 »
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože...
Ono hodně dělají zvyky z těch statických typu. Pro nás už jen představa existence nevalidního objektu je neprijatelná.

V případě netypovych jazyku kde to může kdykoliv kdekoliv chcipnout - to tolik neprozivaji.
To už je o zvyku a disciplíně bez ohledu na jazyk.
Před seznámením se z Haskellem jsem to psal proto, protože je to tak správně. Po seznámení s Haskellem jsem začal chápat proč.

Prasit jde i v Haskellu.
To mě zajímá. Ne, to, zda to jde, ale nějakou pěknou ukázku prasení v Haskellu.

Gődel

Re:Typový system versus unittesty
« Odpověď #325 kdy: 21. 06. 2018, 23:50:34 »
Aha. Takže když vytvořím instanci třídy Person s věkem -50, tak ti to je jedno, protože...
Ono hodně dělají zvyky z těch statických typu. Pro nás už jen představa existence nevalidního objektu je neprijatelná.

V případě netypovych jazyku kde to může kdykoliv kdekoliv chcipnout - to tolik neprozivaji.
To už je o zvyku a disciplíně bez ohledu na jazyk.
Před seznámením se z Haskellem jsem to psal proto, protože je to tak správně. Po seznámení s Haskellem jsem začal chápat proč.
Je fakt škoda, že se Haskell neučí do hloubky na našich VŠ.

Gődel

Re:Typový system versus unittesty
« Odpověď #326 kdy: 22. 06. 2018, 00:14:04 »
To mě zajímá. Ne, to, zda to jde, ale nějakou pěknou ukázku prasení v Haskellu.
Nic konkrétního po ruce nemám, prasečiny si neschovávám, ale většinou jde o stupidní použití do notace. Ono vůbec nejhorší jsou lidi, co si myslí, že umí Haskell, a pak v něm něco píšou nebo ho nedejbože vysvětlují jiným. Operátor <- je pro ně přiřazení (haha) a kód píší v podstatě procedurálně.


sdf

Re:Typový system versus unittesty
« Odpověď #328 kdy: 23. 06. 2018, 01:10:47 »
Častým projevem toho nechápání bývá paušální odsuzování – a je jedno, zda PHP, JavaScriptu, Javy nebo C.
vyloučil jste možnost, že ten nechápající jste vy?

Je to Jirsák. Co bys čekal.

sdf

Re:Typový system versus unittesty
« Odpověď #329 kdy: 23. 06. 2018, 01:11:21 »
Častým projevem toho nechápání bývá paušální odsuzování – a je jedno, zda PHP, JavaScriptu, Javy nebo C.
vyloučil jste možnost, že ten nechápající jste vy?

Jistě, Haskell tady přece nikdo neodsuzuje. Není lepší ani horší než ostatní jazyky, je prostě jiný.

Totéž se dá říct o whitespacu....