>临走之前还在做需求,最近在做余量查询,还有一卡多号遗留的一些问题。发现以前的一些代码全是if-else,借着这次机会进行优化掉,记录一下。
><br>所以代码review很重要啊,避免“臭味”代码。
><br>相关代码已脱敏处理。。。
### 1、提前 return,去除不必要的 else
如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。
修改前:
```
if(condition){
//doSomething
}else{
return ;
}
```
修改后:
```
if(!condition){
return ;
}
//doSomething
```
### 2、使用条件三目运算符
使用条件三目运算符可以简化某些 if-else,使代码更加简洁,更具有可读性。
优化前:
```
if ("1".equals(resourceType)) {
resourceType = "a";
} else if ("2".equals("resourceType")) {
resourceType = "b";
} else {
resourceType = "c";
}
```
优化后:
```
resourceType = "1".equals(resourceType) ? "a" : "2".equals(resourceType) ? "b" : "c";
```
### 3、使用枚举
>
优化前:
```
if ("A".equals(resourceType)) {
map.put("priorty", 99 - i);
} else if ("B".equals(resourceType)) {
map.put("priorty", 89 - i);
} else if ("C".equals(resourceType)) {
map.put("priorty", 79 - i);
} else {
map.put("priorty", i);
}
```
优化后:
引入枚举类:
```
public enum PriortyEnum {
A(99, "A"),
B(89, "B"),
C(79, "C");
private int piorty;
private String resourceType;
PriortyEnum(int piorty, String resourceType) {
this.piorty = piorty;
this.resourceType = resourceType;
}
public static int getpiorty(String resourceType) {
for (PriortyEnum priortyEnum : PriortyEnum.values()) {
if (priortyEnum.getResourceType().equals(resourceType)) {
return priortyEnum.getPiorty();
}
}
return 10;
}
public int getPiorty() {
return piorty;
}
public void setPiorty(int piorty) {
this.piorty = piorty;
}
public String getResourceType() {
return resourceType;
}
public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}
}
```
引入枚举类后,可以优化为一行代码。
调用:
```
map.put("priorty", PriortyEnum.getpiorty(resourceType) - i++);
```
### 4、使用 Optional
// TO DO
### 5、使用策略+工厂模式
//TO DO
>剩余两个以后遇到加上......


优化代码去除if-else