1

構成ファイルを辞書に解析する方法があります。構成パラメーターが欠落している場合、どのように動作するかわかりません。デフォルト値を使用してエラーをログに記録するか、例外を発生させる必要がありますか?

4

1 に答える 1

0

分離することをお勧めします: (1) 構成ファイルの解析と解析された詳細のディクショナリへの保存、(2)ディクショナリからの名前 = 値のペアの取得。この関心の分離により、(2) のオーバーロードされた API を提供できるようになります。この API は、name=valueペアが欠落している場合にデフォルト値が返されるか、例外が発生するかを指定します。例(疑似コード):

cfg = parseConfigurationFile("example.cfg")
x = cfg.lookupString("x"); // throws an exception if the name=value is missing
y = cfg.lookupString("y", "hello, World!"); // returns default value if name=value is missing

また、 API はlookupInt()、などのタイプ セーフなルックアップ メソッドを提供する必要があることもお勧めします。検索された値を指定された型に解析できない場合、これらのメソッドは例外をスローする必要があります。lookupBoolean()lookupDouble()

編集してコメントに返信する

「例をありがとう。構成が間違っている場合は、デフォルト設定を提供してアプリケーションを起動することさえ良い考えかどうかもっと疑問に思っていました。」

私はFail Fast Principleが好きなので、構成データが無効な場合は、エラーを黙って修復しようとするのではなく (おそらく、不適切な構成値ではなくデフォルト値を使用して)、アプリケーションがエラーを報告して停止することをお勧めします。続けて。

ただし、名前=値のペアが欠落していることを必ずしもエラーと見なすべきではないと思います。代わりに、欠損値にデフォルト値を使用することは有効です。すべての構成名=値のペアをオプションにすることでこれを極端にすると、アプリケーションは構成ファイルがまったくなくても「箱から出して」動作できるようになり、アプリケーションの使いやすさが向上することは間違いありません。新しい利用者。

数年前、私はConfig4* (特定の構成ファイル構文を解析するための C++ および Java ライブラリー) を作成しました。Config4* は、任意/すべての name=value ペアをオプションにできる洗練された方法を提供します: これは、Config4* マニュアルがフォールバック構成と呼んでいるものです。それについて知りたい場合は、Config4* 入門ガイドの第 2 章をざっと読んで構成構文を理解してから、同じマニュアルの第 3 章を読んで API を理解することをお勧めします。セクション 3.6.2 ( Parsing Embedded Configuration ) と 3.6.3 ( Using Fallback Configuration ) に特に注意してください。

于 2013-08-05T10:39:47.783 に答える