【问题标题】:Code re-use between Grails project - keeping it DRYGrails 项目之间的代码重用 - 保持 DRY
【发布时间】:2009-10-28 12:20:44
【问题描述】:

Grails 框架有很多结构/特性,允许在项目中遵守 DRY 原则(“不要重复自己”)。也就是说:在特定项目中,您很少需要重复相同的设置或代码块。到目前为止一切顺利。

但是,我使用 Grails 的次数越多,我就越发现我不是在同一个项目中而是在项目之间重复代码。也就是说,项目 A 的控制器、GSP:s 和与项目 B 重叠的图像。这是维护的噩梦,因为项目 A 中的错误修复也必须在项目 B 中修复,等等。

我希望通过不在我的项目之间重复代码来将 DRY 提升到一个新的水平。

我的问题:您如何在自己的内部 Grails 项目中解决这个问题(违反“项目间 DRY”)?

请非常具体/具体。如果可能,请尝试包含有关如何在实践中解决问题的具体代码示例。

【问题讨论】:

    标签: grails


    【解决方案1】:

    编写自定义插件是最好的方法。您无需将其发布到公共存储库,因为您可以在自己网络中的某个位置使用私有存储库。

    我还没有足够的重复代码来拉出一个插件(我的项目中重复的大部分代码似乎都被各种公共插件所覆盖),但一个插件可以像几个常见的域类一样简单或服务。

    【讨论】:

      【解决方案2】:

      我同意 Lee 的观点,使用通用/共享插件可能是最好的方法。出于这个原因,在我工作的一个地方,我们有很多内部插件。

      最常见的模式是将常用的域对象放入它们自己的插件中。这对于域类或服务非常有效。我们最终没有将控制器、视图和静态资源重构为插件,但应该适用相同的原则。

      长话短说:重用 Grails 工件 = 使用插件。

      【讨论】:

        【解决方案3】:

        为了补充 Lee 和 Colin 的观点,这两个观点都是有效的,我认为考虑多个插件可以产生其他好处。

        例如,您可以将应用程序功能拆分为多个部分,并让不同的人来处理它们。或者它可以在部署期间产生结果,例如,如果您需要对应用程序具有两层访问权限 - 用户级和管理员 - 如果您的域模型位于单独的插件中,如 Colin 建议的那样,您可以轻松构建两个应用程序并分别部署它们。

        对于我的应用程序,我有几个特定于我的项目的插件 - 域类插件,一个是用于导入数据的一堆代码(我可以很容易地在我的网站上运行),还有一些其他插件用于图形和自定义脚手架.这需要更多的思考,但我预计随着我们为团队带来更多人,这种因素将在未来产生红利。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-23
          • 2017-03-07
          • 1970-01-01
          • 2014-05-19
          • 1970-01-01
          • 2014-10-19
          • 1970-01-01
          相关资源
          最近更新 更多