在编写代码时,逻辑判断是避免不了的,大量的if-else判断使得往后的维护工作很复杂,怎样才能将大量的if-else分支转换成switch,提高代码的可维护性,大家都知道switch能处理的数据类型很有限,而且case条件不能是表达式。在这时间的工作中发现,我们可以通过一个转换函数,将if-else条件转换成case条件,从而使用switch语句来代替恶心的if-else。大家先看看下面这两段代码:
[b]使用if-else:[/b]
[b]换成switch[/b]
通过引入函数calcCase方法,把if-else条件抽出去,转换成switch能处理的类型,这样procAge函数无论从阅读和维护都容易多了。
[b]使用if-else:[/b]
package codeart.caseusage;
public class Human {
public void procAge(int age) {
// 未成年人
if (age > 0 && age <= 18){
// 大量逻辑
// ...
// 青年
} else if (age > 18 && age <= 30) {
// 大量逻辑
// ...
// 中年
} else if (age >30 && age<=50) {
// 大量逻辑
// ...
// 中老年
} else if (age > 50 && age <= 70){
// 大量逻辑
// ...
// 高龄
} else {
// 大量逻辑
// ...
}
}
}
[b]换成switch[/b]
package codeart.caseusage.withcase;
public class Human {
private enum AgeBound {
child, young, man, old, other
};
private AgeBound calcCase(int age) {
if (age > 0 && age <= 18) {
return AgeBound.child;
} else if (age > 18 && age <= 30) {
return AgeBound.young;
} else if (age > 30 && age <= 50) {
return AgeBound.man;
} else if (age > 50 && age <= 70) {
return AgeBound.old;
} else {
return AgeBound.other;
}
}
public void procAge(int age) {
switch (calcCase(age)) {
case child:
// 大量逻辑
// ......
break;
case young:
// 大量逻辑
// ......
case man:
// 大量逻辑
// ......
break;
case old:
// 大量逻辑
// ......
case other:
// 大量逻辑
// ......
default:
}
}
}
通过引入函数calcCase方法,把if-else条件抽出去,转换成switch能处理的类型,这样procAge函数无论从阅读和维护都容易多了。