web-dev-qa-db-ja.com

Constantsクラスを作成するためのベストプラクティスを提案する

私のチームメンバーの間では、定数クラスの宣言について議論があります。以下のように、定数変数を別のクラスに移動します。

public class Constants
{
      public const string StateId = "ST";
      public const string CountryId = "CI";
}

チームメンバーの何人かは、オプションのオーバーライドを回避するためにクラスをシール済みとして宣言することを提案し、一部は、定数クラスのインスタンスの作成を回避するために静的としてマークすることを提案しています。
しかし、静的なコンストラクターを使用してSealedとして保持することをお勧めします。これは、将来必要になる場合に読み取り専用変数を初期化するのに役立つためです。これについてアドバイスをお願いします。

28
user46506

あなたの質問が何であるかは完全に明確ではありませんが、値が本当に一定である場合、私は次の単純なオプションで問題を見ません:

    public static class LocationConstants
    {
        public const string StateId = "ST";
        public const string CountryId = "CI";
    }

クラス宣言でstaticを使用すると、このクラスの目的に対する意図がわかります。

Marc Gravellは、定数に関する潜在的な問題のいくつかを このスタックオーバーフローの回答 で説明しています。これらがコードベースの問題かどうかはあなただけが知っていますが、値couldが変更される場合は、constの代わりにpublic static readonlyを使用してください。値が変更された場合は、再構築する必要があります。

35
jcorcoran