【发布时间】:2009-12-09 20:53:44
【问题描述】:
在过去的几个月里,我一直在从 Java 过渡到 Groovy,我可以体会到它带来的许多好处:更少的代码、闭包、构建器、MOP,最终使像 Grails 这样的框架成为可能,在编写测试等。
但是,我的同事“指责”我的代码不够时髦。也就是说,我仍然为我的参数和字段声明类型,倾向于使用继承和多态而不是鸭子类型等。在我看来,在这些情况下,它不仅是动态与静态的,而且是动态与面向对象的范例一种困境。在这些情况下,我仍然倾向于选择 OO。我认为 OO 范式在其基本前提方面具有很大的价值,它允许您将代码构造抽象并与特定的现实世界概念相关联。
所以,这里有一些我需要帮助的特殊问题:
我应该为我的参数、字段等声明类型吗?
我应该在简单方法的情况下将代码块声明为闭包吗?
什么时候应该使用鸭子类型而不是多态动态调度。例如,在 groovy 中我可以做 animal."$action"() 或 def animal; animal.action() ,而不是 Animal animal = new Dog();动物.action()。我可以在 Open-Closed 原则的上下文中看到问题,但还有其他原因更喜欢 OO 风格的多态性吗?
什么时候应该在 groovy 中使用接口(如果有的话)?
我确信还有一些其他类似的困境我没有写下来。我还认为这些问题不仅适用于 groovy,而且适用于任何其他动态语言。 你有什么意见?
【问题讨论】:
-
声明类型的另一个原因是在编写 SOAP Web 服务时,生成的 WSDL 可以包含一些类型信息...
标签: java groovy dynamic-languages paradigms