【java】魔法值及其处理

java中的魔法值及其处理

一、什么是魔法值

1、魔法值的简介

魔法值,也叫做魔法数值、魔法数字,通常是指在代码编写时莫名出现的数字,无法直接判断数值代表的含义,必须通过联系代码上下文分析才可以明白,严重降低了代码的可读性。

除数字之外,代码中作为key值的常量字符串也被认为是魔法值,尽管其表示含义比数值较为清晰,但是仍然会产生不规范问题。

2、魔法值的风险

除了代码阅读不直观外,魔法值还可能造成以下问题的发生:

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

二、如何处理

1、使用静态常量

使用redis来实现登录时通过静态常量来设置key和过期时间

public static final String LOGIN_CODE_KEY = "login:code:";
public static final Long LOGIN_CODE_TTL = 2L;
public static final String LOGIN_USER_KEY = "login:token:";
public static final Long LOGIN_USER_TTL = 36000L;

在进行校验时通过静态常量来避免魔法值

public static final String ADMIN_ROLE = "1";
public static final String NAME = "name";
if(!ADMIN_ROLE.equals(MapUtils.getString(user, NAME))){
    ...
}else{
    ...
}
2、使用枚举

在支付业务中通过枚举类来保存支付方式

public enum PayModeEnum {

    WECHAT(10,"微信支付"),
    ZHIFUBAO(20,"支付宝"),
    JINGDONG(30,"京东支付");

    private Integer code;
    private String name;

    public static String getNameByCode(Integer code){
        if (ObjectUtil.isEmpty(code)){
            return "";
        }
        for (PayModeEnum value : PayModeEnum.values()) {
            if (value.code.equals(code)){
                return value.name;
            }
        }
        return "";
    }
}

三、介绍一款idea插件

可以在idea中安装阿里编程规范的扫描插件
在这里插入图片描述
通过开启实时扫描来解决代码中的不规范问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值