質問
プロジェクトで使用される定数宣言のためのこれら 2 つのアプローチを見てきました。
パブリックモジュール内の定数。
NonInheritable(Sealed) クラスの定数
定数宣言に他のアプローチを使用している人はいますか?
これらのアプローチに違いはありますか、長所と短所はありますか?
ありがとう。
解決
それは最も関連のクラスに定数を置く - 例えばMath.Pi
、Int32.MinValue
など。
私は実際には、あまりにも、列挙型である必要があり、各種の定数を見てきました - 。特にステータスコードなどのための
私はそれが本当にこれらの定数が関連付けられていることは賢明なクラスが存在しない場合を除き、単に定数のクラス(またはモジュール)を作成するのが賢明だとは思わない。
他のヒント
私は@ジョンに同意します。しかし、あなたのアプリケーションに固有の定数のために - すなわち、彼らはコンフィギュレーションのデフォルト、チューニングパラメータなどをしている、私は時々それらを保持するために、厳密に型指定された静的な設定クラスを作成します。私は定義された唯一の公共ゲッターとプロパティを経由して値を公開します。このように、彼らは、構成ファイルからロードが、固定値として、コード全体で参照することができます。
私の実践は、どのようなジョンの状態に似ています。列挙型と定数の大部分は、明らかに特定のクラスまたはモジュールに接続されていて、そこにパブリック宣言されています。
私のソフトウェアの最低レベルはユーティリティと呼ばれ、(そのアプリケーションのモードにではなく、特定のユーティリティ)数学ルーチンおよび他の機能と一般的なユーティリティの方法を含んでいます。でちょうど共通のテーマを持っていないユーティリティ関数/サブルーチンです機能の束として持っているモジュールがあります。これは、1つの領域の任意の列挙型の定数や、外出先です。
そのアプリケーションのための一般的な使用であるユーティリティが行くアプリケーションモデルのための同様のエリアがあります。モデルのいずれかのクラスに接続することができないの定数は、どこに行くことに。
だから、定数は私の個人的な枠組みの中で見つけることができる3つの分野
クラス宣言 アプリケーションモデルの一般的なユーティリティモジュール ユーティリティ・アセンブリの一般的なユーティリティ・モジュール
これまでのいずれかのユーティリティモジュール内で宣言する必要が列挙型と定数の数十のうち、実際にはほんの一握り。それらのほとんどは、私のアセンブリにインポートされているWin32関数によって使用されるWin32の減速されます。