INIファイルでブール値を設定するために使用されるさまざまな方法を見てきました:
variable = true
variable = 1
variable = on
variable = yes
最も標準的、一般的、および/または好ましい方法はどれですか?
INIファイルの仕様はありませんが、価値があるものは何でも、私が知っている言語からのいくつかの実装の動作をリストします。
Pythonの組み込みconfigparser
モジュールは、次のように動作する getboolean
を提供します。
受け入れられる値...は
'1'
、'yes'
、'true'
、および'on'
であり、このメソッドはTrue
を返し、'0'
、'no'
、'false'
、および'off'
は、False
を返します。
一方、PHPの parse_init_file
では:
文字列値 "true"、 "on"および "yes"は[〜#〜] true [〜#〜]に変換されます。 "false"、 "off"、 "no"および "none"は考慮されます[〜#〜] false [〜#〜]。
一方、.NETにはINI解析の組み込みサポートはありませんが、最も人気のあるINI解析ライブラリ ini-parser は、自動解析をまったくサポートしていません。その Getting Started の例は、.NETの Boolean.Parse
を使用したブール値の解析を示しています。文字列"true"
および"false"
(大文字を使用)および他に指定された場合は例外をスローします。
要約すると、INIパーサーの異なる実装間で、この質問に一貫性はまったくありません。
私がお勧めします:
1
と0
に固執します。これは、iniファイルのパーサーによって異なります。値は常に文字列です。
true/false:C#では、trueとfalseの文字列を直接boolに変換できます。読みやすさと簡単な変換に匹敵します。より少ないコード。
/1:boolに変換する前に、文字列0と1をintに変換する必要があります。小さいiniファイルサイズ。読みにくい。より多くのコード。
yes/noおよびon/off if/switchステートメントを使用する必要があります。読み取り可能。より多くのコード。
私の好ましい方法はtrue/falseです。オブジェクトはtrue/falseにシリアル化されます。これは、0/1として格納されている場合でも、sqlビットタイプでtrue/falseを使用できます。したがって、唯一の欠点はサイズであり、ほとんどの状況でマイナーになる可能性があります。