web-dev-qa-db-ja.com

アプリケーションが起動したら、検証のためにJavaプロパティキーをENUMに格納するのは良いプログラミング方法ですか?)

サンプルJavaプロパティファイル

appl.component1.property1=value1

appl.component1.property1=value2

リクエストされたプロパティが利用できない場合に例外をスローするようにJava.util.Propertiesクラス追加動作を拡張するカスタムクラス。

public class Configuration extends Properties {
    @Override
    public String getProperty(String key) {
        String value = super.getProperty(key);
        if (value == null) {
            throw new InvalidParameterException(MessageFormat.format(
                    "Value missing for key {0}!", key));
        }
        return value;
    }

}

プロパティファイルをロードし、初期検証用のキーと値のペアを取得します。

PropertiesExcep properties =  new PropertiesExcep();
properties.load("file://foobar");
for(PropertyKeys key: PropertyKeys.values()){
 properties.getProperty(key.getValue())
}

プロパティのキーを使用した列挙型

public enum PropertyKeys{
    PROP1("appl.component1.property1"),
    PROP2("app1.component1.property2");

private String value;

PropertyKeys(String in){
value = in_text;
}

public String getValue(){
return value;
}
}
1
VishAmdi

あなたの質問への答えはいくつかに依存します:

  • 最大のもの:実行時にキーを追加/削除する必要がありますか?

    もしそうなら、列挙型は行くべき道ではないでしょう-その値は一定のままであるはずであり、これは後で醜いコードにつながるでしょう。 Propertiesオブジェクトからキーに直接アクセスする方がはるかに簡単です。

  • キーをどのように使用しますか?

    キーをたくさんコーディングするつもりなら、これはかなりの時間と労力を節約できます。そうでなければ、それは単に時間の無駄です。

  • すべてのキーに変数を設定する価値はありますか?

    大量のキーを使用する場合は、維持するのが面倒で面倒な作業になります。

要約すると、これはアンチパターンではありません-時間を節約できない場合、コードを明確にするか、難易度を削減する場合、ルールはありません-実行する価値はありません。将来、使用するのが面倒になって邪魔になる場合は、悪い習慣です。

1
Luke Melaia

あなたの質問への答えは、アプリケーションの構成を外部化し、アプリケーションの機能がプロパティファイルの構成に依存するようになるため、検証を行うことは良いことです。はい、列挙型はキーを保存するための明白な選択です。

プロパティファイルのキーの変更は、アプリケーション機能に影響を与えます。検証は、プロパティファイルの誤った変更からアプリケーションを保護します。

0
fabfas