JAVA中的魔法值

什么是魔法值?

魔法值是代码中莫名其妙出现的数字,数字意义必须通过阅读其他代码才能推断出来,这样给后期维护或者其他人员阅读代码,带来了极大不便。

举例:

if( flag = 5 ){
	System.out.println("Hello");
}

flag = 5 是什么含义?我们看这一段很难判断出来,这就是魔法值。

魔法值的来源

在对数据的处理过程中,为了充分利用机器的存储性能,数据库存储时往往使用更加简单的数值来代表复杂的名词含义,如使用1、2、3、4等数值来代表状态信息,0、1来代表false和true等。

魔法值的危害

  • 数值使用不规范,多处使用不统一,修改时工作量大且容易遗漏
  • 数值使用错误,程序不产生异常,但业务逻辑数据出现问题
  • 常量字符串作为key时拼写错误,key值无对应value,导致数据异常或缓存无法命中

魔法值解决方案

静态常量

仅在当前类中使用或在方法内部使用的值,可以通过定义静态常量的方式来避免魔法值的出现。 注意:静态常量定义时约定名称的所有字母都要大写,以此表示该标识为不变常量

枚举类

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

public enum CommonCodeEnum{

    // '状态信息(1-未审核,2-已审核,3-审核通过, 4-审核作废)',
    STATUS_INFO_1(1, "未审核"),
    STATUS_INFO_2(2, "已审核"),
    STATUS_INFO_3(3, "审核通过"),
    STATUS_INFO_4(4, "审核作废");

    private int code;
    private String caption;
    ComnCodeEnum(int code, String caption) {
        this.code = code;
        this.caption = caption;
    }
    
    public int code() {
        return code;
    }
    public String caption(){
        return caption;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值