gpt4 book ai didi

java - 动态语言中的 “dynamic” 会不会太多?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:16 24 4
gpt4 key购买 nike

在过去的几个月里,我一直在从 Java 过渡到 Groovy,我能体会到它带来的许多好处:更少的代码、闭包、构建器、最终使像 Grails 这样的框架成为可能的 MOP,当编写测试等

然而,我却被同事“指责”说我的代码不够groovy。也就是说,我仍然为我的参数和字段声明类型,倾向于使用继承和多态性而不是 duck typing 等。在我看来,在这些情况下,它不仅是动态与静态,而且是动态与面向对象的范式一种困境。在那些情况下,我仍然倾向于更喜欢 OO。我认为 OO 范式在其允许您抽象代码构造并将其与特定的现实世界概念相关联的基本前提中具有很大的值(value)。

所以,这里有一些我需要帮助的特殊问题:

  1. 我应该为我的参数、字段等声明类型吗?

  2. 当简单方法可以时,我是否应该将代码块声明为闭包?

  3. 我什么时候应该使用鸭子类型而不是多态动态分派(dispatch)。例如,在 groovy 中我可以做 animal."$action"() 或 def animal; animal.action() ,而不是 Animal animal = new Dog();动物 Action ()。我可以在开闭原则的上下文中看到 first 的问题,但是还有其他更喜欢 OO 样式多态性的原因吗?

  4. 我什么时候应该在 groovy 中使用接口(interface)(如果有的话)?

我确信还有一些其他类似的困境我没能写下来。我还认为这些问题不仅适用于 groovy,也适用于任何其他动态语言。你怎么看?

最佳答案

这并不总是流行的观点,但我认为您的代码越明确、越清晰越好。

我不喜欢让你猜测到底发生了什么的结构......

我在 Ruby 工作了一年,一点也不喜欢它。我并不是说它没有擅长的地方,我只是说我真的很喜欢让事情保持干净和明确,并不认为 Ruby 有这个目标。

有一件事我确实弄清楚了——你打字的数量并不等同于整体开发速度。确实,包含大量重复代码的复杂代码库会导致开发速度非常缓慢,但是简单地减少您键入的内容而不消除重复是无用的,并且键入更长、更清晰、更明确的代码通常会更快(超过项目的长度)而不是用简洁、不太正式的语言编写的相同代码。

如果您不相信打字与开发速度没有关系,那么下次您发布项目时,请计算代码行数并除以花费的人天数(包括调试和测试)。换句话说,一天敲了多少代码。您会发现结果是一个非常小的数字——实际上,键入代码在任何软件项目中都是非常小的一部分。

关于java - 动态语言中的 “dynamic” 会不会太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1876810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com