Java开发为什么不允许魔法值出现在代码中
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容介绍了"Java开发为什么不允许魔法值出现在代码中"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年12月01日Java开发为什么不允许魔法值出现在代码中
本篇内容介绍了"Java开发为什么不允许魔法值出现在代码中"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
静态常量取代魔法值
像下面这个例子:
if (billCount > 75) { //todo} else { //todo}如果在不了解这块的业务的同事,在读到这块代码的时候,可能会想,75 是什么鬼,为啥和这个数比较,背后深藏着什么秘密吗?可能只有当时的开发人员记得了,导致代码可读性和可维护性极差。
如果声明一个常量,来替换该魔法值,可能就会使代码的可读性和可维护性大大增加。
static final Integer BASIC_BILL_COUNT = 75;
还有些魔法表达式,比如:
if (value > 60 && value <= 80 && type = 1) { // todo}比如这个表达式是表示状态为正常且项目活跃,就可以定义:
boolean isActiveProject = value > 60 && value <= 80 && type = 1;
这样是不是可读性就提高了,一眼就可以看出来这块代码的逻辑。
枚举类取代魔法值
还有一种消除魔法值的方式是使用枚举类代替,下面让我们举个例子:
if (eventId == 1) { System.out.println("睡觉");} else if (eventId == 2) { System.out.println("吃饭");} else if (eventId == 3) { System.out.println("打豆豆");}如上代码是针对事件 id 去执行相应的事件,如果事件比较少,大家还可以勉强记住每个 eventId 对应的含义,但是随着事件 id 的增多,很可能会发生,新来的员工把事件 id 给搞混了,导致执行错误的事件,发生 bug。
那么我们可以使用枚举类来表示相应的事件:
public enum EventEnum {/*** 睡觉*/SLEEP_EVENT(1, "睡觉"),/*** 吃饭*/EAT_EVENT(2, "吃饭"),/*** 打豆豆*/FIGHT_PEA_EVENT(3, "打豆豆");private int eventId;private String desc;EventEnum(int eventId, String desc) {this.eventId = eventId;this.desc = desc;}public int getEventId() {return eventId;}public String getDesc() {return desc;}}
修改完之后的代码如下:
if (eventId == EventEnum.SLEEP_EVENT.getEventId()) { System.out.println("睡觉");} else if (eventId == EventEnum.EAT_EVENT.getEventId()) { System.out.println("吃饭");} else if (eventId == EventEnum.FIGHT_PEA_EVENT.getEventId()) { System.out.println("打豆豆");}是不是可读性急剧提升,还不快看看自己代码中有没有这样的魔法值出现,有的话赶紧改造起来。
还有如果你需要在不同的地点引用同一数值,魔法数会让你烦恼不已,因为一旦这些数字发生改变,就必须在程序中找到所有的魔法值,并将它们全部修改一遍,这样就太费时费力了。
其实不只是 Java 不应该在代码中使用魔法值,其他语言亦是如此。
"Java开发为什么不允许魔法值出现在代码中"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
魔法
代码
事件
可读性
豆豆
开发
例子
内容
可维护性
常量
更多
知识
表达式
不同
实用
烦恼
学有所成
接下来
不快
人员
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电视机网络服务器ip地址查询
恒大 软件开发岗
银行数据库演练报告
新型城镇化杂志哪个数据库收录
网络技术基础课程考试
l网络安全技术实训报告心得
180.188.19服务器
西安西西弗斯软件开发哪家好
淄川加工管理软件开发公司
幼儿园网络安全责任书范本
找软件开发合作者
筑网络安全 建文明社会
辽阳供热站自动化控制软件开发
软件开发员工表扬
提供网络安全解决方案的企业
如何建立sql数据库只读账户
银行外包软件开发不是人干的
软件开发是什么导向性工业
数据库表合并
腾跃集团 软件开发
网络安全的丽的视频
华为基站平台软件开发一部
数据库结构同步 增量
天津新一代网络技术推广
广东软件开发攻略
怎么租借服务器
服务器主板怎么装win7
海口管理软件开发公司
软件开发计入成本还是费用
安徽服务器管理软件