Go中的结构化配置 - Andrew


在一个软件的开发过程中,有一个时间点需要使用配置语言,你只能通过标记做这么多,否则就会变得太脆弱。所选择的语言应该提供一种人和计算机都能轻松解析的格式。通常情况下,大多数人都会选择YAML、TOML,有时甚至是JSON。对于Djinn CI的开发,这些都不符合我的需求,所以我开发了自己的,专门用于Go的配置语言。

配置语言应该是什么
在我看来,配置语言应该允许以声明的方式来配置一个软件。
该语言的语法应该容易让人理解,因为他们会花大量的时间来阅读和编写上述配置。
一种配置语言应该少一些视觉噪音,也就是说,任何可能会影响一个人阅读语言能力的东西。它还应该允许评论,所以写配置的人可以解释配置的目的。

最后一点,视觉噪音和评论,排除了JSON作为配置语言的可能性。它对于数据的序列化和程序之间的交换是没有问题的,但应该避免作为主要的配置格式。但这并不排除YAML或TOML。这些都是很好的配置语言,取决于被配置的内容。我应该强调,没有一种单一的配置语言可以满足每个软件的配置要求。所选择的语言将取决于你想如何暴露你的软件进行配置。

注意:当我使用术语 "主要配置格式 "时,我指的是一个人需要自己编辑的配置。JSON对于存储由程序编辑的配置来说是不错的。我对JSON作为配置格式的主要不满来自于我必须自己编辑它。

详细点击标题