从静态打字到动态打字

Ham*_*aya 5 c++ ruby java type-systems clojure

我一直致力于静态类型语言(C/C++,Java).我一直在玩Clojure,我真的很喜欢它.

我担心的一件事是:说我有一个窗口,需要3个模块作为参数,并且需求发生变化,我需要将另一个模块传递给函数.我只是更改了函数,编译器在我使用它的任何地方都会抱怨.但在Clojure中,在调用函数之前不会抱怨.我可以做一个正则表达式搜索和替换,但似乎有机会错过一个调用,它将被忽视,直到该函数实际被调用.你们怎么处理这个?

zgc*_*rch 8

这是动态类型语言中自动化测试/测试驱动开发更为重要的原因之一.我没有使用Clojure(我主要使用Ruby),所以很遗憾我不推荐一个特定的测试框架.

  • +1.实质上,静态类型系统只是一组自动生成的单元测试(正如我的一位动态福音传播者朋友所指出的那样).您需要使用动态语言手动编写代码,这样可以提供更大的灵活性,同时也可以更加省力.由您和您的特定设计决定是否支持动态或静态语言. (2认同)
  • @jshen:但多少功夫?在*good*静态类型语言中,您几乎可以忘记它是静态类型的.它只在像C语言系列这样的垃圾中,你不得不经常提醒编译器所有类型. (2认同)