4.合并条件表达式
在项目中有些逻辑判断是可以通过梳理和归纳,变更为更简单易懂的逻辑判断代码,如下所示。
优化前代码:
String city = "西安"; String area = "029"; String province = "陕西"; if ("西安".equals(city)) { return "xi'an"; } if ("029".equals(area)) { return "xi'an"; } if ("陕西".equals(province)){ return "xi'an"; }
优化后代码:
if ("西安".equals(city) || "029".equals(area) || "陕西".equals(province)){ return "xi'an"; }
5.使用枚举
JDK 1.5 中引入了新的类型——枚举(enum),我们使用它可以完成很多功能,例如下面这个。
优化前代码:
Integer typeId = 0; String type = "Name"; if ("Name".equals(type)) { typeId = 1; } else if ("Age".equals(type)) { typeId = 2; } else if ("Address".equals(type)) { typeId = 3; }
优化时,我们先来定义一个枚举:
public enum TypeEnum { Name(1), Age(2), Address(3); public Integer typeId; TypeEnum(Integer typeId) { this.typeId = typeId; } }
之前的 if else 判断就可以被如下一行代码所替代了:
typeId = TypeEnum.valueOf("Name").typeId;
6.使用 Optional
从 JDK 1.8 开始引入 Optional 类,在 JDK 9 时对 Optional 类进行了改进,增加了 ifPresentOrElse() 方法,我们可以借助它,来消除 if else 的判断,使用如下。
优化前代码:
String str = "java"; if (str == null) { System.out.println("Null"); } else { System.out.println(str); }
优化后代码:
Optional<String> opt = Optional.of("java"); opt.ifPresentOrElse(v -> System.out.println(v), () -> System.out.println("Null"));
小贴士:注意运行版本,必须是 JDK 9+ 才行。
7.梳理优化判断逻辑
和第 4 点比较类似,我们可以通过分析 if else 的逻辑判断语义,写出更加易懂的代码,例如以下这个嵌套判断的优化。
优化前代码:
// 年龄大于 18 if (age > 18) { // 工资大于 5000 if (salary > 5000) { // 是否漂亮 if (pretty == true) { return true; } } } return false;
优化后代码:
if (age < 18) { return false; } if (salary < 5000) { return false; } return pretty == true;
我们需要尽量把表达式中的包含关系改为平行关系,这样代码可读性更高,逻辑更清晰。