业务上需要实现一个在后端填写信息后通过接口调用来生成审批单的功能,但代码评审的时候却被说魔法值太多了。说实话还是头一回听说了“魔法值”的概念,所以回头查查改改。
什么是魔法值
applicationInfo.put("信息2", entity.getMsgOne());
applicationInfo.put("信息3", entity.getMsgTwo());
applicationInfo.put("信息4", entity.getMsgThree());
applicationInfo.put("信息5", entity.getMsgFour());
写的代码类似与上面,key是审批单中给审批人看的属性名称,value是属性对应的信息。
作为一个应该要规范化的流程,key的值应该是有限且确定的,而上面实现的方式却是直接以字符串的形式写进去,如果不小心打错字之类的,就会直接让对应接口接收不到消息了(想起了看别人注释打错了字死活看不懂,后来还是读完代码回头帮忙修了的经历
除了上述自己写的,还有在维护老代码时经常见到的另一种魔法值,通常长下面这样:
if(del == 0){
//一段逻辑
}
...
if(isShow == 1){
//另一段逻辑
}
这种比较恶心,在老项目基础上扩展功能的时候总得和他们打交道。在表示删除状态的时候,0表示的是删除。但是到了表示展示状态的时候,0表示不删除,1才表示展示。我???????
这种时