我见过各种用于在INI文件中设置布尔值的方法:
variable = true
variable = 1
variable = on
variable = yes
哪种规范,常见和/或首选方式最适合?
答案 0 :(得分:6)
没有针对INI文件的规范,但无论它的价值如何,我都会列出一些我认识的语言实现的行为。
Python的内置configparser
模块提供了getboolean
,其行为如下:
接受的值...是
'1'
,'yes'
,'true'
和'on'
,这会导致此方法返回True
和{{ 1}},'0'
,'no'
和'false'
,导致它返回'off'
。
另一方面,在PHP的parse_init_file
中:
字符串值" true" ," on" 和" yes" 转换为 TRUE 。 " false" ," off" ," no" 和"无" 被视为 FALSE 。
与此同时,.NET没有对INI解析的内置支持,但其最流行的INI解析库ini-parser不提供任何自动解析值的支持,并将它们全部作为字符串返回。其Getting Started示例显示使用.NET Boolean.Parse
解析布尔值,它将接受字符串False
和"true"
(带任何大小写)并在给定时抛出异常别的什么。
总结:在INI解析器的不同实现之间,这个问题绝对没有一致性。
我建议:
"false"
和1
。答案 1 :(得分:4)
这取决于ini文件的解析器。 值始终是字符串。
true / false :在C#中我可以将true和false字符串直接转换为bool。等同于可读性和易于转换。更少的代码。
0/1 :在转换为bool之前,我必须将字符串0和1转换为int。较小的ini文件大小。不太可读。更多代码。
是/否和开/关我必须使用if / switch语句。可读。更多代码。
我的首选方式是true / false。对象序列化为true / false,即使存储为0/1,也可以使用sql位类型的true / false。因此,唯一不利的方面是大小,在大多数情况下都可能很小。