什么是“按惯例编码”?

时间:2009-05-23 16:24:11

标签: grails groovy

我一直在关注Grails上的Groovy并注意到底部有一行说:

  

Grails旨在将“按惯例编码”范例引入Groovy。

按惯例编码究竟是什么?

6 个答案:

答案 0 :(得分:23)

  

约定优于配置(又称按惯例编码)是一种软件设计范例,旨在减少开发人员需要做出的决策数量,获得简单性,但不一定会失去灵活性。

     

这个短语实质上意味着开发人员只需要指定应用程序的非常规方面。例如,如果模型中有类Sale,则默认情况下,数据库中的相应表称为sales。只有当一个人偏离这个约定时,比如调用表“products_sold”,才需要编写关于这些名称的代码。

     

当您使用的工具实现的约定符合您所需的行为时,您无需编写配置文件即可享受这些好处。当您所需的行为偏离实施的约定时,您就可以配置所需的行为。

来自"Convention over configuration" article on Wikipedia

答案 1 :(得分:15)

在Grails的上下文中,“按惯例编码”意味着许多(繁琐和重复的)显式代码和/或配置被简单的命名和目录结构约定所取代。例如:

  • 在grails-app / controllers目录中名称以Controller结尾的任何类都自动成为Spring控制器,其中定义的闭包将绑定到URL - 您不必像在XML文件中那样对其进行配置当使用纯弹簧时。
  • 同样适用于taglibs(grails-app / taglib目录) - 不再需要繁琐的TLD文件!
  • grails-app / domain中的域类可能具有最多的“约定魔法”,自动映射到自动生成的数据库模式 - 其中DB表和列名按惯例与域属性名相同。

答案 2 :(得分:9)

按惯例编码与按配置编码: 你有一些东西的定位或命名约定的想法,所以你不必明确地告诉程序什么东西或它被称为什么。
例如,在ASP.Net MVC中,存在一种用于存储视图以及它们被调用的内容的约定。这意味着当您的代码指示服务器返回视图时,运行时将在某些文件夹中查找具有特定命名结构的视图。有关更清晰的信息,请参阅this pdf中的第20页。

另一个例子是方法的命名约定。例如,在事件驱动的语言中,您可以选择显式声明哪个方法处理哪些事件,或者您可以依赖命名约定 - 例如...... _ OnOpen或... OnClick然后依赖运行时来弄清楚调用给定事件的正确方法。

答案 3 :(得分:4)

Convention over Configuration。设计工具或框架的概念是将最常见的配置选项作为默认配置,因此绝大多数用户无需进行任何配置。

答案 4 :(得分:3)

这里有很多约定:

  1. 如何命名HTML元素,以便它们可以作为HTTP请求中的参数轻松访问;
  2. 如何将对象属性与数据库中的表名和列名相关联;
  3. 如何将项目安排到目录/包中;
  4. 当你发现自己以特定的方式解决一个常见问题时,这就是你所做的。你注意到了相似之处并将它们编成了一些自动化方案。

答案 5 :(得分:2)

这意味着如果您坚持使用您使用的任何基于约定的框架定义的某些编码约定,您将免费获得许多功能。换句话说,如果您根据框架期望构建应用程序,可以节省大量工作。

按惯例查找编码的优缺点是个好主意。