有没有令人信服的理由不使用Groovy?

2022-09-01 06:46:46

在长期缺席该平台之后,我正在用Java开发一个LoB应用程序(在过去的8年左右的时间里,我在Fortran,C,一小部分C++和后来的.Net中根深蒂固)。

Java,这门语言,与我记忆中没有太大变化。我喜欢它的优点,我可以解决它的缺点 - 平台已经成长,决定无数不同的框架,这些框架似乎彼此做同样的事情是一个不同的故事;但这可以等到另一天 - 总而言之,我对Java感到满意。然而,在过去的几周里,我对Groovy着迷,纯粹是从自私的角度来看:但不仅仅是因为它使针对JVM的开发成为比Java(语言)更简洁,更有趣(以及“时髦”)的命题。

Groovy最让我印象深刻的是它固有的可维护性。我们所有人(我希望!)都努力编写出文档良好,易于理解的代码。但是,有时我们使用的语言本身会打败我们。例如:在 2001 年,我用 C 语言编写了一个库,用于将 EDIFACT EDI 消息转换为 ANSI X12 消息。这不是一个特别复杂的过程,如果稍微涉及的话,我认为当时我已经正确地记录了代码 - 我可能已经这样做了 - 但是大约六年后,当我重新审视该项目时(并且在适应C#之后),我发现自己迷失在如此多的C样板(mallocs,指针等)中,以至于我花了三天的深思熟虑的分析才终于明白我六年前一直在做什么。

今天晚上,我写了大约2000行Java(毕竟这是休息日!我已经尽我所能地记录了如何,但是,但是,在这2000行Java中,很大一部分是Java样板。

这就是我看到Groovy和其他动态语言获胜的地方 - 可维护性和后来的理解。Groovy可以让您专注于自己的意图,而不会陷入特定于平台的实现的困境;它几乎是,但不完全是自我记录。我认为,当我在几年后重新审视我目前的项目(我将尽快将其移植到Groovy)时,这对我和我的继任者来说都是一个巨大的福音,他们将继承它并继续良好的工作。

那么,有什么理由不使用Groovy呢?


答案 1

我能想到不使用Groovy(或Jython或JRuby)的原因有两个:

  • 如果你真的,真的需要性能
  • 如果您错过了静态类型检查

这些都是大如果。在大多数应用中,性能可能不是人们想象的那么重要,静态类型检查是一个宗教问题。也就是说,所有这些语言的一个优势是它们能够与本机Java代码混合和匹配。两全其美。

由于我不对你的生意负责,所以我说“去吧”。


答案 2

如果你使用Groovy,你基本上会丢弃有关类型的有用信息。这让你的代码“时髦”:漂亮而简洁。

Bird b 

成为

def b

另外,你可以玩所有的元类的东西和动态的方法调用,这在Java中是一种折磨。

然而,是的,我已经广泛地尝试了IntelliJ,Netbeans和Eclipse,在Groovy中不可能进行严重的自动重构。这不是IntelliJ的错:类型信息不存在。开发人员会说,“但是如果你对每个代码路径(嗯)进行单元测试,那么你可以更容易地重构。但不要相信炒作:添加更多代码(单元测试)会增加大规模重构的安全性,但它们并没有使工作更容易。现在,您必须手动修复原始代码单元测试。

所以这意味着你不会在Groovy中经常重构,特别是当一个项目成熟时。虽然您的代码简洁易读,但它不会像每天,每小时和每周自动重构的代码那样出色。

当您意识到不再需要由 Java 中的类表示的概念时,只需将其删除即可。在 Eclipse 或 Netbeans 或其他任何东西中,你的项目层次结构就像一棵圣诞树一样亮起,告诉你这个变化到底搞砸了什么。 告诉编译器(以及您的IDE)如何使用变量,方法是否存在等信息。而IDE只能做这么多的猜测。def thing

最后,Java代码充满了“样板”,但经过多次重构后,它被揉捏成最终形式。对我来说,这是为未来的程序员获得高质量、可读代码的唯一方法,包括当那些未来的程序员是未来的你时。


推荐