感觉很少有人真的了解 yaml(的缺点),很多人了解的 yaml 其实仅限于 json 语法糖范围

2018-11-24 23:57:26 +08:00
 mcfog

参考资料: https://arp242.net/weblog/yaml_probably_not_so_great_after_all.html

几个 point:

yaml 特别复杂,spec 比 xml 更长,是 json 的十倍多,toml 的七倍多

yaml 复杂在哪里?比 json 超集的地方? 可以表示各种语言原生的类型

yaml 有很多相关的安全问题,因为 parse 的时候是可能构造各种东西的

yaml 宣称的可移植性其实并不成立,除非去掉很多强大的特性

我能理解几乎所有人用说 yaml 的时候,都其实只在说“不超过 json 表达能力的“那个 yaml 的子集,但我希望能让更多人知道其实全集的 yaml 是个问题特别多的东西,另外用 yaml 库 parse 用户输入的时候,请务必多看看文档,可能会有很多 option 是需要调整的

7886 次点击
所在节点    程序员
14 条回复
HelloAmadeus
2018-11-25 00:58:57 +08:00
ansible 在用,kubernetes 在用, 你只能是在你写的应用程序里面不用, 甚至你都不能决定你的应用程序里面不用 yaml。 你说出个天花板的理由, 也改变不了什么 。要么你就写个更好的, 而且给现在所有语言都写了能用于生产的 parser, 然后在批评 yaml, 那自然会有人给你点赞。
iamcoward
2018-11-25 01:06:31 +08:00
toml 怎么样呢?有没有了解的说说
via
2018-11-25 01:31:46 +08:00
对于第一个例子我更宁愿相信是 parser 的锅而不是 yaml 本身的
Trim21
2018-11-25 02:32:53 +08:00
需要写 yaml 的时候我都是写 json 然后转换成 yaml...
trait
2018-11-25 03:01:10 +08:00
@iamcoward toml 很不错,比起 yaml 长长的一串树结构,toml 的 table 可读性更高,一直是 rust 语言的包管理和工具链配置格式
buildblock
2018-11-25 03:36:51 +08:00
一般情况下 yml 就是拿来做配置的,几个月都不会碰一下,何必纠结这些东西呢。工具是用来解决问题的,不是让你爽的,好用从来都不是一个东西能否得到广泛使用的充分条件。
lovelybear
2018-11-25 08:36:00 +08:00
我倒觉得没必要太过纠结于 yaml 好或者不好,没有完美的编程语言,也没有完美的文件格式,与编程语言一样,配置文件格式没有优劣,一切都以适用性为主,哪种配置文件符合你的需要,哪种配置文件可以更快地帮助你完成开发,哪种配置文件就是最好的。
yurun
2018-11-25 08:47:27 +08:00
同样不喜欢 yaml
lizheming
2018-11-25 09:20:22 +08:00
yaml 的规范具复杂...有时候加不加引号都需要考虑很久...
artandlol
2018-11-25 09:36:41 +08:00
https://pulumi.io/
一个管理 yaml 的编程语言,aws 出品
zhengxiaowai
2018-11-25 10:00:03 +08:00
yaml 就一个优点可以胜过 json 了,yaml 可以注释 JSON 无法注释。

你想想看在好几百行的配置文件中,没有注释是一件多可怕的事情
vakara
2018-11-25 10:10:05 +08:00
写 yaml 还好,读地话,有时候需要游标卡尺…
hjc4869
2018-11-25 10:17:13 +08:00
以前我的项目经常用 yaml 做 config,现在全部换回 xml 了🤣
mcfog
2018-11-25 11:32:45 +08:00
@via yaml parser 实现的不好其实不也还是标准太复杂了所以不容易做好么…

@buildblock 知道优缺点才能更好的作出选择,开发快只是一点,可维护性,复杂性还有安全性都应该纳入选择的考量范围

@zhengxiaowai 我同意注释对于配置来说是必须的,因此 JSON 做配置并不明智,但这并不代表这就能成为选择 YAML 的理由,因为市面上常见的配置文件方案里,基本只有 JSON 不支持注释

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/511208

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX