Configuration 配置文件在什么时候成为编程语言?
我一直在思考配置文件以及它们与代码的关系,现在我的观点似乎在改变,这取决于天气和风向。尽管我不断回到学习Lisp时的第一个认识:数据和代码之间几乎没有区别。对于配置文件来说,这似乎是双重事实。从正确的角度来看,Perl脚本只不过是Perl的配置文件。这往往会对QA等任务和分工(如谁应该负责更改配置文件)产生相当严重的后果 从配置文件到完全成熟的语言的爬行通常是缓慢的,并且似乎是由对通用系统的渴望驱动的。大多数项目似乎一开始都很小,只有一些配置项,比如在哪里写日志、在哪里查找数据、用户名和密码等。但随后它们开始增长:功能开始能够打开或关闭,操作的时间和顺序开始得到控制,并且不可避免地,有人希望开始向其中添加逻辑(例如,如果机器是X,则使用10;如果机器是Y,则使用15)。在某一点上,配置文件会变成一种特定于域的语言,并且编写得很糟糕 现在,我已经漫无边际地准备好了舞台,下面是我的问题:Configuration 配置文件在什么时候成为编程语言?,configuration,programming-languages,configuration-files,config,Configuration,Programming Languages,Configuration Files,Config,我一直在思考配置文件以及它们与代码的关系,现在我的观点似乎在改变,这取决于天气和风向。尽管我不断回到学习Lisp时的第一个认识:数据和代码之间几乎没有区别。对于配置文件来说,这似乎是双重事实。从正确的角度来看,Perl脚本只不过是Perl的配置文件。这往往会对QA等任务和分工(如谁应该负责更改配置文件)产生相当严重的后果 从配置文件到完全成熟的语言的爬行通常是缓慢的,并且似乎是由对通用系统的渴望驱动的。大多数项目似乎一开始都很小,只有一些配置项,比如在哪里写日志、在哪里查找数据、用户名和密码等。
至于向配置文件添加逻辑,我会避免这种情况。我认为最好是让配置文件在应用程序中打开逻辑。根据我的经验,配置文件中的行为会导致缺乏可维护性和理解性。我强烈希望配置文件尽可能简单。非常有趣问题 我倾向于将配置文件限制为非常简单的“key=value”格式,因为我完全同意您的观点,配置文件可以很快成为成熟的程序。例如,任何试图“配置”OpenSER的人都知道您所说的感觉:这不是配置,而是(痛苦的)编程 当你需要你的应用程序以你现在无法想象的方式非常“可配置”时,那么你真正需要的是一个插件系统。你需要以一种其他人可以编写新插件并在将来将其挂接到你的应用程序的方式来开发你的应用程序 因此,要回答您的问题:
database.conf
,我通常会对名为database.conf.tem的文件进行源代码控制plate
。现在我当然要谈谈我作为开发人员所做的工作。作为管理员,我可能希望对我为每次安装选择的实际设置进行源代码管理。例如,我们远程管理数百台服务器,我们需要跟踪它们的配置:我们选择使用源代码管理
编辑:虽然我认为上述情况适用于大多数应用程序,但当然也有例外。例如,您的应用程序可能允许其用户动态配置复杂的规则。大多数电子邮件客户端允许用户定义管理其电子邮件的规则(例如,“所有电子邮件都是
key = val
key2 = val
name = `hostname`
#!/usr/bin/perl
if ( -x /bin/foo )
{
print <<EOF;
foo=me
bar=you
EOF
}
else
{
print <<EOF;
foo=bar
bar=foo
EOF
}
num_threads = 13
hostname = 'myhost'