Java中的魔法值和解决方法

2023-11-19

目录

一、什么是魔法值

二、解决方法


一、什么是魔法值

魔法数值、魔法数字、魔法值,这是一个东西,不同的叫法。

所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义,数字意义必须通过阅读其他代码才能推断出来,这样给后期维护或者其他人员阅读代码,带来了极大不便。

例如:

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

当其他人员阅读时就会引起深深的疑问:为什么flag=5时做这个?flag=5背后隐藏着什么秘密?flag=5意味着什么? 如果时间久,原开发人员也要重新看代码才能明白当时的深意,这就大大增加了二次开发和维护时的难度。

我的错误

原代码如下:

 String region ="360723";
        if ("360723".equals(region) || Constant.ADMIN.equals(Common.isBlank(user.get("roleCode")))) {
            Map para = new HashMap();
            para.put("code",region);
            para.put("codeLike","1");
            List regionList = regionService.selectListByPara(para);
            request.setAttribute("regionList", regionList);
        }

二、解决方法

使用static final 定义常量或使用enum值。

    // 区划码
    protected static final String REG = "360723";
 // 区划码
    protected static final String REG = "360723";
    
    public String list(HttpServletRequest request) {
        Map user = ShiroUtil.getCurrentUser();
        String region ="360723";
        if (REG.equals(region) || Constant.ADMIN.equals(Common.isBlank(user.get("roleCode")))) {
            Map para = new HashMap();
            para.put("code",region);
            para.put("codeLike","1");
            List regionList = regionService.selectListByPara(para);
            request.setAttribute("regionList", regionList);
        }

:使用static final声明常量,可以方便以后维护更新。修改变量的值时只用修改一处,还不用担心修改了其它不该修改的常量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的魔法值和解决方法 的相关文章

随机推荐

  • IBM、甲骨文、CNCF 就谷歌对 Istio 治理的处理提出抗议

    近日来 Istio 商标转让 IBM 抗议谷歌违背承诺未将 Istio 捐献给 CNCF 的事情闹的沸沸扬扬 Google 宣布将 Istio 商标转让给 Open Usage Commons 组织 IBM 声明对 Google 违背承诺未
  • Ubuntu下通过docker安装wechat

    Ubuntu下通过docker安装微信 一 安装docker sudo apt update sudo apt upgrade sudo apt full upgrade 安装证书 sudo apt install apt transpor
  • 前缀、中缀、后缀表达式和二叉树

    概念 前缀表达式 Prefix Notation 是指将运算符写在前面操作数写在后面的不包含括号的表达式 而且为了纪念其发明者波兰数学家Jan Lukasiewicz 所以前缀表达式也叫做 波兰表达式 后缀表达式 Postfix Notat
  • explain查看sql语句执行计划

    explain sql 执行结果字段描述 id select唯一标识 select type select类型 table 表名称 type 连接类型 possible keys 可能的索引选择 key 实际用到的索引 key len 实际
  • ORB_SLAM2运行官方数据集/自己数据集

    官方数据集运行结果 WeChat 20230210194425 可以正常运行 自己数据集运行结果 自己的数据集 主要是用手机摄像头采集的实验室进行了一下简单的运行 可以成功运行 但是由于查看的相关程序的是死循环不能像运行官方数据集那样完整保
  • 1553B通信项目开发笔记(一)协议概述

    最近接了个项目 需要用1553B协议通信 仅作为RT端口进行通信 控制器采用ARM 使用芯片为国产的BU61580芯片 功能和引脚和DDC的61580完全一致 系统组成 MIL STD 1553B时分制指令 响应多路传输数据总线采用半双工传
  • Mybatis学习笔记2-配置文件解析

    在学习笔记1中大概学习了如何创建Mybatis框架的过程 其中有部分是编写核心配置文件 具体内容如下
  • 数据结构-双端队列

    定义 某种意义上 是栈和队列的结合 具体排序原则取决于使用者 实现 双端队列是元素的有序集合任何一端都允许添加移除元素 Deque 创建一个空的双端队列 无需参数 返回一个空的双端队列 addFront item 无返回值 addRear
  • python自动化测试添加日志_Python自动化测试之日志记录

    前言 在任何一个软件开发过程中 日志记录都是一个必须要做的事 记录日志 有助于问题排查 后续的大数据统计也要需要使用日志提供原始数据 Python日志库 logging Python 的日志记录工具 这是Python官方提供的日志记录库 优
  • JSP数据交互(application、cookie)

    关于作用域的对比 page
  • AWS SAA C003 S3 Type

    A solutions architect is using Amazon S3 to design the storage architecture of a new digital media application The media
  • cicd 04--构建自动化发布流程

    cicd 04 构建自动化发布流程 1 简介 2 构建过程 2 1 功能说明 2 2 jenkins gitlab 配置 2 3 测试结果 3 注意事项 4 说明 1 简介 在实际项目中 为了提高开发人员的服务发布效率 避免用户手动buil
  • ethercat foe字节对齐解决方案

    发现ecat从站的代码没实现字节对齐 头是3字节 在转换foe数据会丢数数据 修改前 brief Mailbox header typedef struct MBX STRUCT PACKED START UINT16 Length lt
  • web学习笔记

    常用属性 1 Html基础 3 常用快捷键 3 认识大前端
  • 大规模分布式消息中间件简介

    大规模分布式消息中间件简介 当前各种 RPC 中间件技术已经广泛应用于各个领域 其中 服务器之间消息通讯这种功能广泛应用于这些中间件中 于是 将这种面向消息的中间件 Message Oriented Middleware MOM 抽象出来
  • Unity Shader之——UV旋转动画

    Unity中通过Shader实现UV旋转动画 实现一个旋转效果 并且可以控制速度 方法是 以纹理中心为旋转中心 直接上代码如下 Shader Custom Simple Properties Color Color Color 1 1 1
  • How do I develop a service?

    CXF provides you with many options to build services This guide is meant to give you a quick overview of those options a
  • Failed to convert value of type ‘java.lang.String’ to required type ‘java.util.Date’

    springboot项目在接收时间类型的时候 报Failed to convert value of type java lang String to required type java util Date 的错误 这句话的意思是 把字符
  • matplotlib基础作图方法总结

    学习过程中稍微总结一下 有问题的话各位大佬可以指出来 用jupyter作图 代码如下 import numpy as np import matplotlib pyplot as plt 在jupyter中画图时 想要显示图需要 matpl
  • Java中的魔法值和解决方法

    目录 一 什么是魔法值 二 解决方法 一 什么是魔法值 魔法数值 魔法数字 魔法值 这是一个东西 不同的叫法 所谓魔法值 是指在代码中直接出现的数值 只有在这个数值记述的那部分代码中才能明确了解其含义 数字意义必须通过阅读其他代码才能推断出