定数と構成ファイルを使用して構成を維持する場合


20

特定のキーをweb.configに入れるか、Constants.csクラスに入れるか、またはこのようなものに入れるかについて、よく自分と戦います。

たとえば、ケースに関係なくアプリケーション固有のキーを保存する場合、カスタムキーを使用して保存し、Web構成から取得したり、定数クラスの定数を参照して使用したりできます。

いつ設定キーで定数を使用したいですか?

この質問は、私が考えるあらゆる言語に本当に当てはまります。

回答:


20

個人的には、デフォルト値として定数のみを使用し、構成ファイルからの値によってオーバーライドされるようにします。

アプリケーションがコマンドライン引数を取る場合、それらは順番に構成ファイルのパラメーターをオーバーライドします。


3

構成ファイルの値は、定数クラスの値よりも維持するのが困難です。コンパイラは存在を確認せず、正しいタイプであるため、IDEは通常、コード支援を提供せず、また、切り替える必要がある別の構文であるためプログラミング中。

だから私は置くことをお勧めします:

  • すべてのインストールでコード内の定数と同じ値。それらを1つの定数クラスに入れて(さまざまな値を簡単に試して、それらがどのように機能するかを確認できます)、それらを使用するモジュールに配置することにはいくつかの利点があります(そのモジュールを変更するときに別のファイルを開く必要はありません全員が編集する1つのファイルを避けて、バージョン管理の競合を引き起こします)。
  • 構成ファイルへのインストールごとに変更する必要がある可能性のある値。とにかくコードにデフォルトを入れたいと思うので、もし値が設定で設定されていなくても、アプリケーションは(何らかの形で)動作します。

あなたは... ...それのXMLを正しいタイプ...設定キーを何を意味しています
WeDoTDD.com

@CoffeeAddict:正しいタイプとは、数値を必要とするオプションがあり、設定ファイルにその場所に数値以外の文字列がある場合、実行時まで見つからないことを意味します。そして、「構成キー」は、XMLの場合は要素パスである構成ファイルから値を取得するために使用するものです。わかりました、スキーマと対応するクラス(xsd一方から他方を生成するツールがあります)を使用してXMLSerializer(とにかくC#でXMLを処理する最も賢明な方法)configを使用できます。作業。
ジャン・ヒューデック

同意しない:「構成ファイルの値は、定数クラスの値よりも維持するのが難しい」-構成のコーディング方法と、これらの構成可能なアイテムの数に依存します。
エンジニア

3

定数を変更するには、ほとんどの場合、アプリケーションを再構築する必要があります。言い換えれば、誰かがコードにアクセスできない場合、定数は定数のままです。

そのため、エンドユーザーが提供する必要がある(および変更する必要がある)情報は、構成ファイルに保存する必要があります。他のほとんどは定数の下に行く必要があります。ただし、構成ファイルが破損している場合は、正当なデフォルトまたはエラー例外処理が必要です。

オブジェクトの抽象化の一部ではない要素(つまり、外部(呼び出し元)オブジェクトによって変更されることを意図していない定数が隠されている可能性が高い場合、本質的には、構成ファイルよりもプライベート定数としてより良いことを意味します)。

互いに関係のない異なるオブジェクトに関連する多くの構成要素があり、非常に多くのオブジェクトが(同じまたは独自の)構成ファイルを取り出す必要がある場合、これらの要素は定数である必要があります。


1

簡単な経験則は、変更する必要なく特定のコンテキストに適用できることがわかっている固定値セットで作業することがわかっているときに定数を作成することです。他のすべての外部構成を提供します。

定数の良い例は、操作したすべての図形がまたはのいずれかであるSQUARE場合ROUNDです。ほとんどの言語では、一度だけ割り当てて、アクセス方法を最適化することで、この値が時間とともに変化しないという事実を活用できます。

使用する値を事前に想定することはできないため、値を動的に取得する必要がある場合は外部構成が必要ですが、それはパフォーマンスのトレードオフを行う必要があるという意味ではありません。現在、正しく行われている場合、それらを取得する代価を支払うのは一度だけで、それでもすべての利点が得られます。



0

定義による定数は、変更すべきでない値(PIなど)のメモリ位置です。

私はあなたが定数ではなく「パラメータ」を意味すると仮定しています

言われたことに加えて、構成ファイルからのユーザー入力に変数を公開すると、アプリケーションに損害を与える可能性があることに注意してください。

可能であれば、コードで値を検証して健全性チェックを行うことなく、構成ファイルの値を公開しないでください。また、構成ファイルにビジネスルールのパラメーター(最高給与など)を配置せず、それらにも定数を使用しないことをお勧めします。このような値は、適切なテーブル定義とともにデータベースに保存する必要があります。これにより、変更時にセキュリティが強化され、データ値のバージョンを自動的に作成できます(ストアドプロシージャまたはdbログを使用)。もちろん、これはアプリケーションがどれだけ敏感であるかに依存します。

設定ファイルを使用してデータを保存する場合は、バージョン管理を行ってください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.