我正在处理一个大型应用程序,它具有不同的条件(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
}
答案 0 :(得分: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();
(我允许你添加必要的检查以避免例如空指针异常)
答案 1 :(得分:0)