前言
兄弟姐妹好 ๑•̀ㅂ•́)و!!!
感谢你能看这一次阿昌分享的阿昌之丑陋代码优化小记录,这次记录分享的,多分类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));
}
那么以上就是这次记录的全部内容,感谢你能看到这里!!! (•‾̑⌣‾̑•)✧˖°