阿昌之丑陋代码优化多分类if-else判断

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿昌之丑陋代码优化多分类if-else判断相关的知识,希望对你有一定的参考价值。

前言

兄弟姐妹好 ๑•̀ㅂ•́)و!!!

感谢你能看这一次阿昌分享的阿昌之丑陋代码优化小记录,这次记录分享的,多分类if-else判断。在我们业务之中,会有很多情况的多分类if-else判断

举个栗子: ↓ ・∀・)

如要用某个字段为type来区分是哪种类型的垃圾,1可回收物,2其他垃圾,3厨余垃圾,4有害垃圾

这4种情况,像阿昌这种菜鸡会第一时间想到if-else去判断,如下:

//根据类型,获取对应的分类名
public String findTypeName(Integer type)
    if (type==1)
        return "可回收物";
    
    if (type==2)
        return "其他垃圾";
    
    if (type==3)
        return "厨余垃圾";
    
    if (type==4)
        return "有害垃圾";
    
    return "";

但是如果业务量类型大了之后,倘若要加新的分类,比如干垃圾/湿垃圾,那就需要在使用到这里的代码处都需要修改,这样子就产生了大量的耦合 ⊙▽⊙),会改麻了!!!


正文

那阿昌这里就记录分享一个方法,可以去解决这种问题。通过Enum枚举类,代码如下:↓

public enum TypeEnum 
    RECYCLABLE(1,"可回收物"),
    OTHER_WASTE(2,"其他垃圾"),
    KITCHEN_WASTE(3,"厨余垃圾"),
    HARMFUL_WASTE(4,"有害垃圾");

    @Getter//lombok
    private final Integer typeCode;
    @Getter//lombok
    private final String typeName;
    TypeEnum(Integer typeCode,String typeName)
        this.typeCode=typeCode;
        this.typeName=typeName;
    

    //对外暴露直接查找对应name的方法
    public static String findTypeNameByCode(Integer typeCode)
        TypeEnum[] values = TypeEnum.values();
        for (TypeEnum value : values) 
            Integer originCode = value.getTypeCode();
            if (originCode.equals(typeCode))
                return value.getTypeName();
            
        
        return "";
    

这样子就可以直接通过遍历的方式进行获取,虽然他还是依然还进行if-else,但是这样子做会让我们修改代码变的方便了,只需要在这个Enum枚举类中增加对应的枚举项就好,比如干垃圾/湿垃圾

public enum TypeEnum 
    RECYCLABLE(1,"可回收物"),
    OTHER_WASTE(2,"其他垃圾"),
    KITCHEN_WASTE(3,"厨余垃圾"),
    HARMFUL_WASTE(4,"有害垃圾"),
    DRY_WASTE(5,"干垃圾"),
    WET_WASTE(6,"湿垃圾");

    //....省略细节


测试

public static void main(String[] args) 
    System.out.println(TypeEnum.findTypeNameByCode(5));


那么以上就是这次记录的全部内容,感谢你能看到这里!!! (•‾̑⌣‾̑•)✧˖°

以上是关于阿昌之丑陋代码优化多分类if-else判断的主要内容,如果未能解决你的问题,请参考以下文章

阿昌之丑陋代码优化多层嵌套if-else

阿昌之丑陋代码优化多层嵌套if-else

阿昌之丑陋代码优化通过策略模式&模版模式来优化Controller执行流程

C# 之 if-else代码优化

可以一学的代码优化小技巧:减少if-else冗余

if-else代码优化,优雅点好不