我应该用Duck Type语言定义接口吗?
我即将用鸭式语言(Groovy)编写我的第一个应用程序.
如果我以静态类型语言编写相同的应用程序,那么我需要定义一些接口.显然是因为在Groovy中打鸭子,实际上并不是必需的.目前,我认为定义它们可能是有意义的,作为需要在各种对象中实现的方法的文档.我错过了点吗? 解决方法
我最近在这里阅读了这篇文章(现在我找不到链接,但它是“为什么是动态语言好”的帖子之一,以及S.Lott的许多评论的一个大回答)答案是:
你可以.在Groovy中,您可以使用Java或Groovy定义接口并实现它们.然而,使用鸭子打字(Groovy允许但也允许显式类型),许多人会说“为什么要打扰?源代码是它自己的文档,界面源于“使用源”等. 就个人而言,这让我疯狂 – 我喜欢Java给我的编译时间(或者是真正的开发时间)检查,但这又是一个辩论.如果您使用Groovy,那是因为您要编写来自鸭式打字的精采简洁明了的代码.在这种情况下,必须避免接口. 他们在哪里需要?程序的部分和程序的公共API(尽管它们也可以是抽象类).否则,我会说你应该尽量避免使用鸭式语言.这迫使你在类上编写文档,或者编写一个非常清楚的代码,这是一样的. 我认为这是一个可怕的做法,但是这是向动态语言转变的范式的一部分.而且我认为如果你避免将界面与实现分开,你将会明白它背后的“为什么”.我仍然没有,尽管它与不重复代码(保持DRY)有很多关系. 编辑:离电脑有一些清晰度:)不要将界面与实现分开的主要原因之一是让您远离对类型的依赖.在鸭式打字中,如你所知,我不在乎它是否是Vehicle界面的实现者(例如).我只关心它是否具有2个参数的go方法.因此,您使用界面越多,您在Groovy中编写的Java越多(“您可以使用任何语言编写Fortran”).应该避免这种情况,因为新的语言可以开启新的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |