魔法值问题

一、什么是魔法值

魔法值,也叫做魔法数值、魔法数字,通常是指在代码编写时莫名出现的数字,无法直接判断数值代表的含义,必须通过联系代码上下文分析才可以明白,严重降低了代码的可读性。除数字之外,代码中作为key值的常量字符串也被认为是魔法值,尽管其表示含义比数值较为清晰,但是仍然会产生不规范问题。
//例如
if(flag=='3'){
    ...
}
这个3在运行的时候不会报错,但在代码阅读时很难判断他所代表的含义
 

二、魔法值的影响

  1. 使代码的可读性下降
  2. 不规范的数值使用,可能会导致多出不同意,当进行修改时会带来很大的工作量
  3. 作为key值的常量字符串会出现拼写错误的现象,key无法命中value,导致数据异常或缓存无法命中
 

三、解决办法

1、定义静态常量

在当前类中使用或在方法内部使用的值, 可以通过定义静态常量的方式来避免魔法值的出现。
public final static Integer ENABLE=0;
public final static Integer DISABLE=1;

2、接口中定义

接口中定义,继承这个接口的实现类都可以使用这些常量。
public interface UserService{
    public final static Integer ENABLE=0;
    public final static Integer DISABLE=1;
}

3、使用枚举

@Getter
@AllArgsConstructor
public enum DemoEnums {

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

    /**
     * 状态值
     */
    private final Integer code;
    /**
     * 状态名
     */
    private final String name;
}
使用
user.setStatus(DemoEnums.ENABLE.value())
 
posted @ 2023-07-06 21:04  风筝上的猫  阅读(151)  评论(0)    收藏  举报