临走之前还在做需求,最近在做余量查询,还有一卡多号遗留的一些问题。发现以前的一些代码全是if-else,借着这次机会进行优化掉,记录一下。 所以代码review很重要啊,避免“臭味”代码。 相关代码已脱敏处理。。。
1、提前 return,去除不必要的 else
如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。
修改前:
代码语言:javascript复制if(condition){
//doSomething
}else{
return ;
}
修改后:
代码语言:javascript复制if(!condition){
return ;
}
//doSomething
2、使用条件三目运算符
使用条件三目运算符可以简化某些 if-else,使代码更加简洁,更具有可读性。
优化前:
代码语言:javascript复制 if ("1".equals(resourceType)) {
resourceType = "a";
} else if ("2".equals("resourceType")) {
resourceType = "b";
} else {
resourceType = "c";
}
优化后:
代码语言:javascript复制resourceType = "1".equals(resourceType) ? "a" : "2".equals(resourceType) ? "b" : "c";
3、使用枚举
优化前:
代码语言:javascript复制 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);
}
优化后:
引入枚举类:
代码语言:javascript复制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;
}
}
引入枚举类后,可以优化为一行代码。
调用:
代码语言:javascript复制map.put("priorty", PriortyEnum.getpiorty(resourceType) - i );
4、使用 Optional
// TO DO
5、使用策略 工厂模式
//TO DO
剩余两个以后遇到加上......
Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/优化代码去除if-else