从 Java 迁移到 Ruby
Java 成熟、经受考验且速度快(尽管一些反 Java 的人可能仍然持不同意见)。它也很啰嗦。从 Java 转到 Ruby,代码量会显著减少。你也可以期待花更少的时间快速构建原型。
相似之处
与 Java 类似,在 Ruby 中,…
- 内存由垃圾回收器为你管理。
- 对象是强类型的。
- 有 public、private 和 protected 方法。
- 有内嵌的文档工具(Ruby 的叫做 RDoc)。rdoc 生成的文档与 javadoc 生成的非常相似。
不同之处
与 Java 不同,在 Ruby 中,…
- 你不需要编译代码。直接运行即可。
- 有几个不同的流行第三方 GUI 工具包。Ruby 用户可以尝试 WxRuby、FXRuby、Ruby-GNOME2、Qt 或 Ruby Tk。
- 在定义类等内容后,使用
end关键字,而不是将代码块用花括号括起来。 - 你使用
require而不是import。 - 所有成员变量都是私有的。从外部访问一切都通过方法。
- 方法调用中的括号通常是可选的,并且经常省略。
- 一切皆为对象,包括数字,如 2 和 3.14159。
- 没有静态类型检查。
- 变量名只是标签。它们没有关联的类型。
- 没有类型声明。只需根据需要为新变量赋值,它们就会“出现”(例如,
a = [1,2,3]而不是int[] a = {1,2,3};)。 - 没有类型转换。只需调用方法。单元测试应该在你运行代码之前就告诉你是否会遇到异常。
- 是
foo = Foo.new("hi")而不是Foo foo = new Foo("hi")。 - 构造函数始终命名为“initialize”,而不是类名。
- 你有“mixins”而不是接口。
- 倾向于使用 YAML 而不是 XML。
- 是
nil而不是null。 - Ruby 中的
==和equals()处理方式不同。当你想在 Ruby 中测试等价性时(Java 中的equals()),使用==。当你想知道两个对象是否相同(Java 中的==)时,使用equal?()。