阿昌之丑陋代码优化多分类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判断的主要内容,如果未能解决你的问题,请参考以下文章