优化代码去除if-else

2022-06-10 21:25:16 浏览数 (1)

临走之前还在做需求,最近在做余量查询,还有一卡多号遗留的一些问题。发现以前的一些代码全是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

0 人点赞