词条统计
浏览次数:7408 次
编辑次数:6次 历史版本
最近更新:2013/6/20
创建者:掷鸡蛋者

本文原是论坛帖子,讨论在此处:http://www.wojilu.com/Forum1/Topic/143 


约定优于配置(convention over configuration),或称“惯例重于配置”,最主要的意思,就是按照一定的约定来编程,会大幅度减少配置的工作量。

在很多人眼里,大量的配置文件,是软件灵活性的表现。但在实际的开发过程中却发现,配置文件,尤其是大量的 xml 配置文件,成了开发人员的噩梦。如何减少配置,在少配置、甚至不配置的情况下,让编程自动进入最佳状态,就成了人们追求的目标,也成了敏捷开发的重要理念。这时候,从rails等框架开始,人们发现,按照实践中的最佳做法(“最佳实践”),通过设计一套约定的规则,可以有效的减少配置量。
(当然,我们也要补充一下,约定并不意味着不可以配置。)

以下 wojilu mvc 中的约定规则,是使用 wojilu mvc 开发的前提和基础。我们依次来看:


1、目录约定
控制器获取的数据,最后会渲染到视图模板中。模板在哪里?这是一开始mvc开发者会产生的困惑。你只要记住,两者的对应关系就行了。你不需要在 controller 中先获取模板路径,然后手动加载模板。wojilu mvc 框架已经自动帮你做了,你只要遵守这个约定规则就行了。比如:


views/Article文件夹对应于ArticleController:ArticleController的所有视图文件都会自动到 views/Article 目录下来查找


2、命名约定
比如所有控制器都以 Controller 结尾。
所有布局控制器都叫 LayoutController
所有权限检查控制器都叫 SecurityController
所有的领域模型类都要继承自 ObjectBase,从而自动具有了一个叫 Id 的属性。
所有的图片目录都在 ~img/ 下面,脚本文件在 ~js/ 中,样式表文件在 ~css/ 中
在表单中,如果要使用 ctx.PostValue 从表单中获取数据,表单中每个控件的名称都必须是:类型的camel命名格式+点号+属性名称,比如BlogPost的标题应该是:<input name="blogPost.Title"/>


3、路由和链接的约定
所有Show方法在链接中都不显示。比如 /post/32.aspx 其实等效于 /post/32/show.aspx


4、命名空间的约定
在“我记录网站综合系统”中,所有应用都有一个模型叫 ***App,
比如博客应用有一个 Blog.Domain.BlogApp,
论坛应用有一个 Forum.Domain.ForumApp
所有领域模型都在 “应用名称.Domain” 命名空间中,比如上面的 Blog.Domain 和 Forum.Domain 中


5、表单的约定
校验:自动对紧邻的前一个控件校验
信息提示:不管成功还是失败,信息自动出现在form的上部,而不用你在表单视图上书写任何占位符或变量
所有的表单的action有一个#{ActionLink}变量。


6、翻页的约定
你如果使用了默认的翻页结果集中的PageBar,那么所有的翻页链接就自动生成了,都是在现有的url后面加上 /p1 或 /p2 等类似标志表示页码。

本文会经常更新,补充一些约定规则。