1

私は、さまざまな条件 (if) とそれに関連付けられたさまざまなメソッドを持つ大規模なアプリケーションに取り組んでいます。以下のコードを最適化する方法を提案してください (ネストされた if をできるだけ減らす)。他の特定の条件を簡単に取得できます(プロパティファイルを使用して条件を取得します)。

 public getParameter(String parameter)
    {
      if(parameter=specific condition1
        ||parameter=specific condition2)
      {
      do this
      }
      if(parameter=specific condition3)
      {
       do something else
      }
      if(parameter=specific condition4)
      {
       do something else
      }
      if(parameter=general condition)
      {
       do something else
      }
      else  {
       do something else
      }
4

2 に答える 2

2

次のようなプロパティファイルがあるとします。

do1=val1,val2,val3
do2=val5,val6,val7

(アクションのセットが固定されているようです)

あなたはそれをロードすることができます

    HashMap<String, HashSet<String>> rules = new HashMap<String, HashSet<String>>();
    for(String key : properties.stringPropertyNames()) {
        HashSet<String> set = new HashSet<String>();
        set.addAll(Arrays.asList(properties.getProperty(key).split(",")));
        rules.put(key, set);
    }

これで、アクション名( "do1"など)を可能な値のセット( "val1"など)にリンクするマップができました。

あなたはでルールを実行することができます

    if (rules.get("do1").contains(parameter)) do1();
    if (rules.get("do2").contains(parameter)) do2();

(たとえば、nullポインター例外を回避するために必要なチェックを追加させます)

于 2012-09-26T06:56:06.730 に答える
0

スイッチケースを使用できます。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

于 2012-09-26T06:43:41.103 に答える