特定のキーをweb.configに入れるか、Constants.csクラスに入れるか、またはこのようなものに入れるかについて、よく自分と戦います。
たとえば、ケースに関係なくアプリケーション固有のキーを保存する場合、カスタムキーを使用して保存し、Web構成から取得したり、定数クラスの定数を参照して使用したりできます。
いつ設定キーで定数を使用したいですか?
この質問は、私が考えるあらゆる言語に本当に当てはまります。
特定のキーをweb.configに入れるか、Constants.csクラスに入れるか、またはこのようなものに入れるかについて、よく自分と戦います。
たとえば、ケースに関係なくアプリケーション固有のキーを保存する場合、カスタムキーを使用して保存し、Web構成から取得したり、定数クラスの定数を参照して使用したりできます。
いつ設定キーで定数を使用したいですか?
この質問は、私が考えるあらゆる言語に本当に当てはまります。
回答:
構成ファイルの値は、定数クラスの値よりも維持するのが困難です。コンパイラは存在を確認せず、正しいタイプであるため、IDEは通常、コード支援を提供せず、また、切り替える必要がある別の構文であるためプログラミング中。
だから私は置くことをお勧めします:
xsd
一方から他方を生成するツールがあります)を使用してXMLSerializer
(とにかくC#でXMLを処理する最も賢明な方法)configを使用できます。作業。
定数を変更するには、ほとんどの場合、アプリケーションを再構築する必要があります。言い換えれば、誰かがコードにアクセスできない場合、定数は定数のままです。
そのため、エンドユーザーが提供する必要がある(および変更する必要がある)情報は、構成ファイルに保存する必要があります。他のほとんどは定数の下に行く必要があります。ただし、構成ファイルが破損している場合は、正当なデフォルトまたはエラー例外処理が必要です。
オブジェクトの抽象化の一部ではない要素(つまり、外部(呼び出し元)オブジェクトによって変更されることを意図していない定数が隠されている可能性が高い場合、本質的には、構成ファイルよりもプライベート定数としてより良いことを意味します)。
互いに関係のない異なるオブジェクトに関連する多くの構成要素があり、非常に多くのオブジェクトが(同じまたは独自の)構成ファイルを取り出す必要がある場合、これらの要素は定数である必要があります。
簡単な経験則は、変更する必要なく特定のコンテキストに適用できることがわかっている固定値セットで作業することがわかっているときに定数を作成することです。他のすべての外部構成を提供します。
定数の良い例は、操作したすべての図形がまたはのいずれかであるSQUARE
場合ROUND
です。ほとんどの言語では、一度だけ割り当てて、アクセス方法を最適化することで、この値が時間とともに変化しないという事実を活用できます。
使用する値を事前に想定することはできないため、値を動的に取得する必要がある場合は外部構成が必要ですが、それはパフォーマンスのトレードオフを行う必要があるという意味ではありません。現在、正しく行われている場合、それらを取得する代価を支払うのは一度だけで、それでもすべての利点が得られます。
また、この設計パターンを使用することもできます。「構成より規約」。
http://msdn.microsoft.com/en-us/magazine/dd419655.aspx http://en.wikipedia.org/wiki/Convention_over_configuration
定義による定数は、変更すべきでない値(PIなど)のメモリ位置です。
私はあなたが定数ではなく「パラメータ」を意味すると仮定しています
言われたことに加えて、構成ファイルからのユーザー入力に変数を公開すると、アプリケーションに損害を与える可能性があることに注意してください。
可能であれば、コードで値を検証して健全性チェックを行うことなく、構成ファイルの値を公開しないでください。また、構成ファイルにビジネスルールのパラメーター(最高給与など)を配置せず、それらにも定数を使用しないことをお勧めします。このような値は、適切なテーブル定義とともにデータベースに保存する必要があります。これにより、変更時にセキュリティが強化され、データ値のバージョンを自動的に作成できます(ストアドプロシージャまたはdbログを使用)。もちろん、これはアプリケーションがどれだけ敏感であるかに依存します。
設定ファイルを使用してデータを保存する場合は、バージョン管理を行ってください。