目录
一、什么是魔法值
魔法数值、魔法数字、魔法值,这是一个东西,不同的叫法。
所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义,数字意义必须通过阅读其他代码才能推断出来,这样给后期维护或者其他人员阅读代码,带来了极大不便。
例如:
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声明常量,可以方便以后维护更新。修改变量的值时只用修改一处,还不用担心修改了其它不该修改的常量。