加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我应该用Duck Type语言定义接口吗?

发布时间:2020-12-14 16:35:33 所属栏目:大数据 来源:网络整理
导读:我即将用鸭式语言(Groovy)编写我的第一个应用程序. 如果我以静态类型语言编写相同的应用程序,那么我需要定义一些接口.显然是因为在Groovy中打鸭子,实际上并不是必需的.目前,我认为定义它们可能是有意义的,作为需要在各种对象中实现的方法的文档.我错过了点吗
我即将用鸭式语言(Groovy)编写我的第一个应用程序.

如果我以静态类型语言编写相同的应用程序,那么我需要定义一些接口.显然是因为在Groovy中打鸭子,实际上并不是必需的.目前,我认为定义它们可能是有意义的,作为需要在各种对象中实现的方法的文档.我错过了点吗?

解决方法

我最近在这里阅读了这篇文章(现在我找不到链接,但它是“为什么是动态语言好”的帖子之一,以及S.Lott的许多评论的一个大回答)答案是:

你可以.在Groovy中,您可以使用Java或Groovy定义接口并实现它们.然而,使用鸭子打字(Groovy允许但也允许显式类型),许多人会说“为什么要打扰?源代码是它自己的文档,界面源于“使用源”等.

就个人而言,这让我疯狂 – 我喜欢Java给我的编译时间(或者是真正的开发时间)检查,但这又是一个辩论.如果您使用Groovy,那是因为您要编写来自鸭式打字的精采简洁明了的代码.在这种情况下,必须避免接口.

他们在哪里需要?程序的部分和程序的公共API(尽管它们也可以是抽象类).否则,我会说你应该尽量避免使用鸭式语言.这迫使你在类上编写文档,或者编写一个非常清楚的代码,这是一样的.

我认为这是一个可怕的做法,但是这是向动态语言转变的范式的一部分.而且我认为如果你避免将界面与实现分开,你将会明白它背后的“为什么”.我仍然没有,尽管它与不重复代码(保持DRY)有很多关系.

编辑:离电脑有一些清晰度:)不要将界面与实现分开的主要原因之一是让您远离对类型的依赖.在鸭式打字中,如你所知,我不在乎它是否是Vehicle界面的实现者(例如).我只关心它是否具有2个参数的go方法.因此,您使用界面越多,您在Groovy中编写的Java越多(“您可以使用任何语言编写Fortran”).应该避免这种情况,因为新的语言可以开启新的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读