每一个小人物的心中都有一个成为大人物的梦想,配置文件也不例外。
当咱们仍是编程新手的时候,常常会有一些前辈告诉咱们:软件开发中要将一些可能变更的参数放到配置文件中,这样就能够在不改变代码且无需从新部署程序的状况下改变程序行为。html
正如前辈告诫咱们的那样,『将一些可能变更的参数放到配置文件中』,可使得程序更加灵活,适应多种业务场景。因而咱们谨遵他们的教诲,在平常的开发过程当中,将数据库链接参数,日志路径等线上环境相关的易变值加入配置文件。的确好用,当咱们的DB想要扩容,当咱们的日志存储想要变动,仅需修改配置文件便可。如此好用,某一天咱们可能也会将软件中的某一个功能特性开关移步到配置文件中。不止于此,咱们开始将更多的可变参数写在配置文件中,已达到更高的灵活度,更有甚者将一些业务逻辑操做从代码中挪到配置文件中。因而,某一天咱们忽然发现本身大部分的时间并非在写代码,而是写配置文件。数据库
每一个工具都想发展成为一个平台,无独有偶,每个配置文件都想成为一个DSL(Domain Specific Language,领域专用语言)。编程
正如第一部分描述的那样,起初配置文件中只是一些与代码执行环境有关的参数配置(供系统管理员使用),到最后,随着一些『业务行为』也被加入到配置文件中,它则慢慢地进化成为了一种DSL。但并非每个软件系统都须要一套本身的DSL,也不是每个DSL都会被设计地那么易懂与易用。有些仅仅是增长了复杂度。数据结构
有人发明了『配置文件复杂读时钟』的概念来描述配置文件这样的一个发展过程,十分贴切。编程语言
因而,软件开发人员从面向代码编程变成了面向配置文件编程。其实,这个时期,配置文件俨然已变成了一种编程语言。工具
那么回过头来想想,在业务发展过程当中,衍生出了一门配置编程语言,这有必要嘛?学习
配置文件有时候的确很好用,能够帮助软件开发人员快速应对一些变化。可是若是过分依赖配置文件,却不得不提它带来的缺陷:编码
本质上:配置文件与代码表明了两种编程范式:声明式(Declarative programming)与命令式(Imperative programming)。spa
当前,几乎全部计算机的硬件工做都是命令式的,也几乎全部计算机的硬件都是设计来运行机器代码,使用命令式的风格来写的。从这点来说,大部分场景使用代码实现业务逻辑要优于配置文件。设计
要回答这个问题,须要对配置文件的目的做出一个定义。
对于大部分的软件系统而言,配置文件是为软件系统的管理员而准备的,方便他们正确而高效地使用软件系统。这样的场景下,应强于代码而弱于配置文件。
这里总结了一些tips,仅供参考:
凡事终有例外。如这样的一个场景:应用程序须要容许用户(使用者)动态地配置复杂的规则(邮件用户想要定义复杂的邮件过滤规则),另一些成熟的商业规则系统中也经常使用配置文件(做为DSL)解决一些特定领域的问题。
https://stackoverflow.com/que...
https://zh.wikipedia.org/wiki...
https://zh.wikipedia.org/wiki...
https://blog.urth.org/2011/01...
http://mikehadlow.blogspot.co...
https://hackernoon.com/config...
http://taint.org/2011/02/18/0...