枚举类和魔术值

本文探讨了枚举类在编程中的优点,包括增强可读性、防止参数错误、优化Switch语句及方便查找引用。同时,枚举类避免了魔术值带来的问题,如难以关联业务和易出错。然而,使用枚举类也存在误区,如业务理解偏差、本质仍为魔术值、枚举分包不当等。正确使用枚举类能提升代码质量和可维护性。
摘要由CSDN通过智能技术生成

1.枚举类的优点

1.1可读性

在idea的环境下,鼠标指针移上去就能看到相应的注释

1.2参数传递错误

例如在一些重要的配置如:消息队列的交换机、队列;缓存的key;等等。用枚举类可以防止把关键的属性写错某个字母。

1.3Switch语句优势

如果业务中一个Switch中可能存在很多个情况,就有可能产生越界的问题。使用枚举值,可以在编译之前就防止越界问题

1.4方便查看在哪里用到过

在idea环境下,直接Ctrl+Shift+F搜索该枚举值,可以找到有哪些地方用到了这个业务属性。如果是魔术值,就不能找到

2.魔术值的危害

  • 同上1.4,如果是魔术值,则无法与其他相关业务进行关联
  • 可能写错字
  • 可能相同的业务,不同的人,不同的情况下,值与业务映射关系不同
  • 看不到idea注释

3.使用枚举类的误区

3.1业务理解偏差

我在日常工作中发现了这样一个问题:对于表中的delete_flag字段,1代表正常,0代表已删除。
但是很多地方用的是Enale.YES.getvalue() 和Enable.NO.getvalue()。这明显跟这个业务不是直接相关的
正确的用法应该是建立一个DeleteFlag枚举类,用USING(1) 和FORBIDDEN(0)来表示是否删除

3.2本质还是魔术值的枚举值

例如有这样一个枚举类:NUMBER,里面的属性分别是ONE(1) TWO(2) THREE(3),这样的枚举本质上还是一个魔术值,他和业务含义没有直接联系

3.3没有为enum单独分包

相关业务的所有enum应该放在同一个包下。不然可能存在想找相关业务的枚举类但是找不到的情况

3.4无论业务,所有enum放在同一个包下

不同的模块的所有enum如果放在了同一个包下,也很难直观的进行区分。应该按业务耦合程度,在包下再细分子包,存放相关的枚举类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值