隐形的公共知识
原名:惯例优于配置原则
Convention over Configuration,常用英文缩写 CoC
惯例原则就是将一些在编程中公认的配置方式和约定信息作为内部缺省的默认规则来使用
使用惯例后就能减少互相理解,沟通的成本
还可以把惯例原则理解为一种约束
惯例原则通常也叫按约定编程,但是不同于契约原则(DBC)的按统一协议/标准协作,惯例原则更重视的是隐形知识的共享
实际上,惯例原则主要解决了在编程中我们对共同隐性知识的学习的问题,通过统一的默认规则,建立起了一道沟通的桥梁。
如果不使用 CoC 你就需要花费大量的时间去解释和说明你新规则的含义,并且还得保证要能消除其他相关人员对新规则的误解。
其他好处:
- 逐渐形成一种编程圈子里共同的专业行话。
- 减少编程时思考决策次数,降低认知负担。(选择就意味着评估,需要耗费时间)
什么样的代码维护起来最轻松?答案是:需要你学习的东西最少的代码。
但是,coc 也有副作用:
- 丢失灵活性
- 自定义惯例有风险 (你的惯例和别人的惯例不同时
- 参考变强制(需要别人学习成本
- 不同框架下的惯例之间并不能复用(比如C和java的惯例不同等
如何正确使用惯例原则:
第一,遵循大多数人使用的惯例。
第二,要搞清楚惯例的适用范围。
第三,自定义惯例时需要在团队内反复不断确认。
第四,要在惯例和灵活性之间做平衡。
第五,不要强制他人使用惯例。
阿里的Java开发规范手册算是惯例吧?一套比较完整的惯例