【发布时间】:2011-12-13 16:20:31
【问题描述】:
首先,我必须说我真的很喜欢 Groovy 以及它为 Java 开发世界带来的所有好东西。但由于我将它用于不只是小脚本,我有一些顾虑。
在这个Groovy help page about dynamic vs static typing 中,当您的代码中有拼写错误时,有以下关于不存在编译错误/警告的声明,因为它可能是对稍后在运行时添加的方法的调用:
取消所有静态类型和 首先编译时检查。但是许多 Groovy 资深人士会证明 它使代码更干净,更容易重构,而且,嗯,更多 动态的。
我非常同意“更动态”部分,但不同意更简洁、更容易重构:
对于其他两个语句,我不确定:从我的 Groovy 初学者的角度来看,这导致代码更少,但以后更难阅读,维护也更麻烦(不能再依赖 IDE 来查找谁在声明一种动态方法以及谁在使用这种方法)。
澄清一下,我发现阅读 groovy 代码非常愉快,我喜欢集合和闭包(解决复杂问题的简洁和表达方式)。 但是在这些情况下我有很多麻烦:
- 'builder' 内不再使用 Map (Of Map (of Map)) 自动完成 无处不在
- 混淆动态方法调用(你不知道是拼写错误还是 动态名称)
- 闭包内部的方法提取更复杂(经常导致代码重复:'它毕竟只是一个小闭包')
- 当您必须为子系统的方法编写闭包参数时,很难猜出闭包参数
不再通过浏览代码来学习:您必须改用文本搜索
我只能看到 GORM 的一些好处,但在这种情况下,动态方法是众所周知的,并且我的 IDE 知道它们(所以对我来说,它更像是系统代码生成而不是动态方法)
我很高兴向 groovy 老手学习他们如何证明这些好处。
【问题讨论】:
标签: dynamic groovy maintenance