【发布时间】:2025-12-26 18:10:12
【问题描述】:
我一直在查看 Grails 上的 Groovy,并注意到底部有一行:
Grails 旨在将“按惯例编码”范式引入 Groovy。
究竟什么是约定俗成的编码?
【问题讨论】:
我一直在查看 Grails 上的 Groovy,并注意到底部有一行:
Grails 旨在将“按惯例编码”范式引入 Groovy。
究竟什么是约定俗成的编码?
【问题讨论】:
Convention over Configuration(又名 Coding by Convention)是一种软件设计范式,旨在减少开发人员需要做出的决策数量,获得简单性,但不一定失去灵活性。
这句话本质上意味着开发人员只需要指定应用程序的非常规方面。例如,如果模型中有一个类Sale,则数据库中对应的表默认称为sales。只有当人们偏离这一约定时,例如调用表“products_sold”,才需要编写有关这些名称的代码。
当您使用的工具实现的约定与您期望的行为相匹配时,您无需编写配置文件即可享受好处。当您想要的行为偏离实现的约定时,您可以配置您想要的行为。
【讨论】:
在 Grails 的上下文中,“按约定编码”意味着大量(乏味和重复的)显式代码和/或配置被简单的命名和目录结构约定所取代。例如:
【讨论】:
按约定编码与按配置编码:
您对东西有一定的放置或命名约定的想法,因此您不必明确告诉程序东西在哪里或叫什么。
例如,在 ASP.Net MVC 中,对于视图的存储位置和调用方式有一个约定。这意味着当您的代码指示服务器返回视图时,运行时将在某些文件夹中查找具有特定命名结构的视图。请参阅this pdf 中的第 20 页了解更多信息。
另一个例子是方法的命名约定。例如,在事件驱动的语言中,您可以选择显式声明哪个方法处理哪些事件,或者您可以依赖命名约定 - 例如 ..._OnOpen 或 ...OnClick,然后依赖运行时来确定调用给定事件的正确方法。
【讨论】:
这里有很多约定:
当您发现自己以特定方式解决常见问题时,您就会这样做。您会注意到相似之处并将它们编入一些自动化方案中。
【讨论】:
见Convention over Configuration。这是设计工具或框架以将最常见的配置选项作为默认值的概念,因此对于绝大多数用户而言,不需要配置。
【讨论】:
这意味着,如果您遵守所使用的任何基于约定的框架所定义的某些编码约定,您将免费获得许多功能。换句话说,如果你按照框架的预期来构建你的应用程序,可以节省很多工作。
查看按惯例编码的优缺点是个好主意。
【讨论】: