一段时间以来,我一直在考虑配置文件及其与代码的关系,并且根据日期和风向,我的观点似乎会发生变化。尽管我越来越多地回到我在学习 Lisp 时最初的认识:数据和代码之间几乎没有区别。这对于配置文件来说似乎是双重的。从正确的角度来看,Perl 脚本只不过是 perl 的配置文件。这往往会对 QA 和分工(例如谁应该负责更改配置文件)等任务产生相当严重的后果。
从配置文件到成熟语言的转变通常很慢,并且似乎是由拥有通用系统的愿望驱动的。大多数项目一开始看起来很小,只有一些配置项,比如在哪里写日志、在哪里查找数据、用户名和密码等。但随后它们开始增长:功能开始能够打开或关闭,操作的时间和顺序开始被控制,并且,不可避免地,有人想要开始添加逻辑(例如,如果机器是 X,则使用 10,如果机器是 Y,则使用 15)。在某个时刻,配置文件变成了一种特定领域的语言,而且是一种写得很糟糕的语言。
既然我已经开始着手搭建舞台,以下是我的问题:
- 配置文件的真正目的是什么?
- 是否应该尝试保持配置文件简单?
- 谁应该负责对他们进行更改(开发人员、用户、管理员等)?
- 它们是否应该受到源头控制(见问题 3)?
正如我之前所说,我对这些问题的回答不断变化,但现在我在想:
- 允许非程序员快速改变大量行为
- 是的,任何不是粗粒度的都应该在代码中
- 用户应该对配置文件负责,程序员应该对配置文件和代码之间的配置层负责,它可以对应用程序进行更细粒度的控制
- 不,但更细粒度的中间层应该是