什么是"按惯例编码"?

Jas*_*ker 23 grails groovy

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

Grails旨在将"按惯例编码"范例引入Groovy.

按惯例编码究竟是什么?

Iva*_*nov 24

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

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

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

来自维基百科上的"Convention over configuration"文章.

  • 今天的维基百科文章并不是一个很好的例子.这里应该考虑其他答案. (2认同)

Mic*_*rdt 15

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

  • 在grails-app/controllers目录中名称以Controller结尾的任何类都自动成为Spring控制器,其中定义的闭包将绑定到URL - 您不必像在使用时那样在XML文件中配置它纯净的春天.
  • taglibs(grails-app/taglib目录)也是如此 - 没有更繁琐的TLD文件!
  • grails-app/domain中的域类可能具有最多的"约定魔法",自动映射到自动生成的DB模式 - 其中DB表和列名通常与域属性名相同.


Fra*_*ans 9

按惯例编码与按编码编码:您对某些内容具有某些放置或命名约定的想法,因此您无需明确告诉程序其中的内容或内容.
例如,在ASP.Net MVC中,存在一种用于存储视图以及它们被调用的内容的约定.这意味着当您的代码指示服务器返回视图时,运行时将在某些文件夹中查找具有特定命名结构的视图.有关更清晰,请参阅此pdf中的第20页.

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