Java解决魔法值问题

1、什么是魔法值

魔法值,也叫做魔法数值、魔法数字,通常是指在代码编写时莫名出现的数字,无法直接判断数值代表的含义,必须通过联系代码上下文分析才可以明白,严重降低了代码的可读性。除数字之外,代码中作为key值的常量字符串也被认为是魔法值,尽管其表示含义比数值较为清晰,但是仍然会产生不规范问题。

举例:

if( flag = 5 ){
	a = 2;
}

在运行的时候不会报错,但在代码阅读时很难判断他所代表的含义

2、魔法值的影响

  • 代码的可读性下降。
  • 数值使用不规范,多处使用不统一,修改时工作量大且容易遗漏。
  • 常量字符串作为key时拼写错误,key值无对应value,导致数据异常或缓存无法命中。

3、解决方案

1、静态常量

在当前类中使用或在方法内部使用的值, 可以通过定义静态常量的方式来避免魔法值的出现。
举例:

public final static Integer ENABLE=0;
public final static Integer DISABLE=1;

静态常量定义时约定名称的所有字母都要大写,以此表示该标识为不变常量

2、接口中定义

接口中定义,实现这个接口的实现类都可以使用这些常量。

举例:

public interface UserService{
    Integer ENABLE=0;
    Integer DISABLE=1;
}

使用:

public class UserServiceImpl implements UserService{
    private Integer ENABLE = DemoInterface.ENABLE;
    
}

3、枚举

枚举类能够约束常量的定义规范,提供统一格式的常量值,在统一异常拦截等内容中广泛使用。

@Getter
@AllArgsConstructor
public enum DemoEnums {

    ENABLE(0, "开启"),
    DISABLE(1, "关闭");

    /**
     * 状态值
     */
    private Integer code;
    /**
     * 状态名
     */
    private String name;
}

使用:

user.setStatus(DemoEnums.ENABLE.value())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值