Potrebuju jeste na chvilku vyhrabat tohle vlakno, protoze si myslim, ze jsem narazil na oblast kde unit testy predci typy.
A chtel bych si nechat poradit jestli je to tak nebo ne...
Problem typu je zavislost na kompilatoru. Ve smyslu ja musim 'verit' kompilatoru, ze provede spravne statickou typovou kontrolu. U unit testu kompilatoru verit nemusim, protoze overeni spravnosti je na nem nezavisle.
Ve vetsine pripadu to asi nebude velky problem, ale co kdyz se budu u nejakeho projektu rozhodovat, ze vymenim kompilator za jiny, protoze ma nejake vyhody, kterych chci vyuzit(napada me jen rychlost, ale muze jich asi byt vic).
Co myslite?
Ano, to je jeden z problémů, ktdrý skrz své malé zkušenosti nevnímáš v celé jeho šíři. Změna kompilátoru není výjimečná, je běžná. Stačí změna platformy (multiplatformní program) či architektury. Kompilátor se mění i s jeho verzí.
Tyto nemají zaručeně ani stejný výstup, ani stejnou kontrolu. Často pak upravuješ program ne proto, že je chybný, ale aby prošel tím ne o onním kompilátorem.
A to ani nemusíme zabředávat do typů, které mění své vlastnosti podle architektury.
Ve výsledku statické typy představují spíše překážku než pomoc, protože překáží, kód je kvůli nim zbytečně těžkopádný a nepřehledný, což zvyšuje počet jiných chyb, které kompilátor neodhalí, a tak se stejně program musí testovat tak jako tak.
Typový systém není cesta k bezchybnému kódu a dokonce ani cesta ke snížení počtu chyb v programu.
Testy jsou lepší cesta. Sice se dá argumentovat, že to je také zbytečný kód navíc podobně jako u statických typů (což je pravda, práci to neušetří), ale je to kód, který není součástí výsledného programu.
Cesta k ideálu bezchybného kódu vede podle mě jinudy. Je to cesta krátkého, přehledného a dobře srozumitelného kódu. Čím méně má program řádků, tím méně má spolehlivě statisticky chyb, čím má jazyk pokročilejší konstrukce, které program zkracují a zpřehledňují či dokonce zabraňují udělat některé chyby, tím lépe.
Přičemž přehlednost a krátkost se mohou navzájem tlouci, takže zkracovat ano, ale nikdy na úkor přehlednosti.
Líbí se mi třeba konstrukce with, nebo zákaz používání přiřazení v podmínkách a podobně. To jsou jednoduchá opatření, která snižují počet chyb spolehlivěji, než statické typy, protože oproti nim si nenesou s sebou negativa.