1381
Vývoj / Re:Typový system versus unittesty
« kdy: 18. 06. 2018, 13:13:26 »
Stalo se mi, že:
Psal jsem kód, kde se řadil strom (uzel, mající n potomků). Každý prvek v seznamu potomků měl být seřazen. Psal jsem na to testy asi tejden. Vždycky všechno prošlo, dal jsem na review, a poslali mi to zpět, že za těchto a těchto okolností to padá.
Pak jsem se dožral a napsal jsem si generátor všech možností - tedy dle mého chápání něco jako statický typ. Pak to půl hodiny chroupalo, vyhodilo pět chybujících scénářů, ty jsem zohlednil a byl klid.
Psal jsem parser. Unittesty jsou samozřejmě na to jak stvořené. Všechno krásně přímočaré, supr. Pochvaloval jsem si, jak umím krásně psát testy. A pak jsem si uvědomil, že jsem idiot. Kdyžbych napsal jen specifikaci toho formátu, a napsal na to generátor, tak se s tím nemusím tak patlat.
Tak jasně, u typů se musí víc přemýšlet. Ale nerad bych odbočoval do těchto bažin.
Rád bych v tomto vláknu ještě pár ukázek nějakého kódu, kde si typy nabijou hubu. Zatím uvedl Gödel uvedl ty prvočísla. To máme jeden. Napadá vás něco dalšího?
Psal jsem kód, kde se řadil strom (uzel, mající n potomků). Každý prvek v seznamu potomků měl být seřazen. Psal jsem na to testy asi tejden. Vždycky všechno prošlo, dal jsem na review, a poslali mi to zpět, že za těchto a těchto okolností to padá.
Pak jsem se dožral a napsal jsem si generátor všech možností - tedy dle mého chápání něco jako statický typ. Pak to půl hodiny chroupalo, vyhodilo pět chybujících scénářů, ty jsem zohlednil a byl klid.
Psal jsem parser. Unittesty jsou samozřejmě na to jak stvořené. Všechno krásně přímočaré, supr. Pochvaloval jsem si, jak umím krásně psát testy. A pak jsem si uvědomil, že jsem idiot. Kdyžbych napsal jen specifikaci toho formátu, a napsal na to generátor, tak se s tím nemusím tak patlat.
Tak jasně, u typů se musí víc přemýšlet. Ale nerad bych odbočoval do těchto bažin.
Rád bych v tomto vláknu ještě pár ukázek nějakého kódu, kde si typy nabijou hubu. Zatím uvedl Gödel uvedl ty prvočísla. To máme jeden. Napadá vás něco dalšího?