1

我正在开发一个具有不同条件(ifs)和与之关联的不同方法的大型应用程序。请提出一种优化下面提到的代码的方法(尽可能减少嵌套的 ifs)。我希望代码能够合并任何其他特定条件轻松。(我使用属性文件来获取条件)。

 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();

(例如,我让您添加必要的检查以避免空指针异常)

于 2012-09-26T06:56:06.730 回答
0

您可以使用开关盒。

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

于 2012-09-26T06:43:41.103 回答