2011-07-16 8 views
5

これは最善のコーディング方法に関する質問です。 .NETアプリケーションで文字列と値をハードコーディングするのを避ける方法についてのコンセンサスを知りたいと思います。 私はこれまでのところ、私が以前働いている場所を見てきたもの:文字列のハードコードを避ける方法

  • 使用して、リソースの.resxファイル静的クラスApplicationStringsを作り、これらの値と文字列のApp.configまたはWeb.config
  • を格納

  • そしてそこにあるすべての文字列と値を宣言:

    public static class ApplicationStrings 
    { 
        #region constants 
        public const string APPLICATION_NAME = "X"; 
        public const string APPLICATION_RESOURCEMANAGER_NAME = "ResourceManagerX"; 
        public const string APPLICATION_DEFAULT_LOGFILENAME = "log.txt"; 
    } 
    

はしかし、第三の方法、ちょうど別のハードコードしないでいるのですか?そのようなクラスを持つことは理にかなっていますか?利点は、すべての文字列が1つの場所にあることですが、実際にはハードコードを避けることですか?

また、この状況で他の習慣を開発した場合は、気軽に投稿してください。

+1

ここでは、静的な読み取り専用フィールドを定数より優先します。定数は永遠に同じ値を持つもののためのものです。バイナリバージョン管理のセマンティクスは少し面倒です。 – CodesInChaos

答えて

4

主な利点は、実際にはすべての文字列を1か所に収めることです。プログラム全体を更新するには、その文字列を変更するだけです。プログラムの異なる部分が同じ文字列を使用し、1つのインスタンスが更新されても別のインスタンスが更新されない場合、問題が発生します。これは、すべてのリテラルに当てはまります。

リソースファイルでは、i18nとl10nの利点があります。あなたがそれを必要とするが、多くの大規模なアプリケーションが必要です。

+1

リソースファイルの利点は、必要に応じて他のバージョンに置き換えることができることです。もちろん、それはソースコードファイルで行うこともできますが、どういうわけか、別の機能ではなく、異なるデータ(i18nとl10n)であることが分かります。 – MRAB

0

まあ、私はApplicationStringsは、一般的に

1

良い解決策である私は、すべてのデータが一つの場所にあり、他で共有することができるので、中央設定ファイルに設定可能なすべてのデータを格納することをお勧めであると考えていることだと思いますアプリケーション

+0

app.configとweb.configファイルを思い出してくれてありがとう、私は最初の質問を更新しました。 –

1

私の意見では、設定が(i)真に定数であり、(ii)もちろん真に公開されている場合にのみ、ApplicationSettingsが役に立ちます。これらのケースのいずれかが当てはまらない場合、これは理想的ではなく、あなたの選択は.configファイルに戻ります。.resx

関連する問題