Java开发为什么不允许魔法值出现在代码中
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"Java开发为什么不允许魔法值出现在代码中"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
神通服务器实例起不来
互联网技术与计算机网络技术
企业网络技术开发好处
中央网信网络安全应急指挥中心
数据库安全专利
茁壮网络安全工程师
360网络安全运维
网络安全学习心得600
东莞软件开发人员薪资水平
服务器内存可以用来做什么
mc怎么租服务器
社保业务软件开发
软件开发企业认定长沙
湖南多功能软件开发收购价格
网络安全攻防实训报告
网络安全隐患如何排查
为什么数据库还原失败
数据库spc
网络安全问题大学生如何应对
溯源网络安全
天津服务器批发厂家
cmac是一个什么类型的数据库
上海增强现实软件开发
网络安全在国家层面
asp页面连接数据库失败
计算机网络技术大专薪资
江西用友软件开发待遇
南邮网络技术与应用2018
sql2000查询表数据库
原神国际服中的服务器是什么