概念
约定优于配置(Convention over Configuration),又称按约定编程,是一种软件设计范式。
本质上是说,系统、类库或框架应该假定合理的默认值,而非要求提供不必要的配置。比如说模型中有一个名为User的类,那么数据库中对应的表就会默认命名为user。只有在偏离这一个约定的时候,例如想要将该表命名为loser,才需要写有关这个名字的配置。
简单来说,如果你所用工具的约定和你的期待相符,就可以省去配置;不符合的话,你就要通过相关的配置来达到你所期待的方式。
思考
约定优于配置简单来理解,就是遵循约定。
想象一下,在软件的世界里如果每个程序员都定义一套自己的规范,这样的话,当你要看他写的程序就要先学习他的规范,看一个程序员的代码就要学习一套规范,是不是想想都头疼?举个现实的例子,浏览器。各个版本的浏览器的兼容性问题让众多程序员焦头烂额。想到这,你有没有觉得其实Java的成功、XML的成功或Maven的成功都有其必然性,它们的设计里面中都包含了一个简单但很深刻的道理,那就是通用。通用是标准和接口的所有意义。
为什么通用?因为它们都遵循了同一套约定。这样,当一个程序员要看另一个程序员写的程序的时候,就会很容易上手,因为他了解同一套规定,减少了重新学习的成本。
可能会有人质疑,我就是不愿意遵循约定,就是愿意多写配置,就是个性怎么了?然而个性意味着什么?个性意味着没有通用性。没有通用性意味着什么?没有通用性意味着死亡。你可能会举例来反驳,比如说微软做的很多东西都没有通用性,只能在Windows平台上运行,但是照样活得好好的。可是全球的Windows用户有那么多,间接使运行在它之上的软件拥有了一定的通用性。平台的流行性决定了它软件的通用性。另外,个性还意味着复杂,没有人会喜欢复杂的东西。
如果你自身的实力不够坚强,那就老老实实按照规范走吧,等到你实力坚强而有话语权的时候,再来创造属于你的规范,然后让人家遵循你制定的规范。只是等到大家都遵循你制定的规范的时候,你的规范可能已经成为了一种约定了。
"人的一生就是从简单到复杂,从复杂到简单。"