约定优于配置
来自百度百科:
约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_sold”,才需写有关这个名字的配置。如果您所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。
简单来说,如果你所用工具的约定和你的期待相符,就可以省去配置;不符合的话,你就要通过相关的配置来达到你所期待的方式
出现的背景:
设计不好的框架通常需要多个配置文件,每一个都有许多设置。这些配置文件为每一个项目提供信息说明从URL到将类映射到数据库表的各种信息。大量包含太多参数的配置文件通常是过度复杂的应用设计的指标(代码坏味道)。例如,在知名的Java对象关系映射框架Hibernate的早期版本中,将类及其属性映射到数据库上需要是在XML文件中的描述,其中大部分信息都应能够按照约定得到,如将类映射到同名的数据库表,将属性分别映射到表上的字段。后续的版本抛弃了XML配置文件,而是使用这些恰当的约定,对于不符合这些约定的情形,可以使用Java 标注来说明(参见下面提供的JavaBeans规范)。
思考:
想象一下,在软件的世界里,如果每个程序员都定义一套自己的规范,这样的话,如果你要看他写的程序,就要先学习他的规范,是不是想想都头疼?举个现实的例子,浏览器。各个版本的浏览器就已经让众多程序员焦头烂额了。想到这,你有没有觉得其实Java的成功,xml的成功,maven的成功都有其必然性,它们的设计里面中都包含了一个简单但很深刻的道理,那就是通用。这也是标准和接口的意义。
为什么通用?因为它们都遵循了同一套约定。这样,当一个程序员要看另一个程序员写的程序的时候,就会很容易上手,因为他了解同一套规定,减少了重新学习的成本。
可能会有人质疑,我就是不愿意遵循约定,就是愿意多写配置,就是个性怎么了?然而个性意味着什么?个性意味着没有通用性。没有通用性意味着什么?没有通用性意味着死亡。你可能会举例来反驳,比如说微软做的很多东西都没有通用性,只能在windows平台上运行,但是照样活得好好的。可是全球的windows用户有那么多,间接使运行在它之上的软件拥有了一定的通用性。平台的流行性决定了它软件的通用性。个性还意味着复杂,没有人会喜欢复杂的东西。
by .k
关注"编程v",每一天涨一点
STAY HUNGRY & STAY FOOLISH