Java与Ruby编程:类型安全、集合迭代、控制流及类定义对比
1. 类型安全并不保证正确性
类型安全只能在一定程度上确保程序按预期运行,但它很薄弱。它仅表明程序的各个部分能组合在一起,却不能保证你选择的所有部分都是正确的。例如,若汽车润滑系统中加的是橙汁,虽然从“类型”上看,润滑系统装的是液体,满足“类型安全”,但显然不能开车。
回到数学计算的例子,若错误地认为 Math.cos 函数接受的是度数而非弧度,就会出现问题:
irb(main):067:0> Math.cos 180
=> -0.598460069057858
而正确使用弧度的结果是:
irb(main):069:0> Math.cos Math::PI
=> -1.0
1999年9月,类似的“小问题”导致了火星气候轨道器的损毁。由于计算时使用英制单位而非公制单位,轨道器过于接近火星,最终被火星大气摧毁。
解决类型安全问题的一种方法是增加更多的类型安全机制。可以创建带有嵌入式单位的枚举值类型,而非使用基本类型。但如果没有一流的语言支持,这会使代码更繁琐。在Ruby中,更可行的方法是进行良好的自动化测试。
Ruby和Java虽然都是类型安全的,但实现方式不同。Ruby采用动态类型,对象携带类型信息,在运行时根据这些信息确定对象的合法方法集。Java则提供静态类型,变量的类型在编译时由Java编译器强制检查。两种方式各
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



