在阿里巴巴开发手册中,提到魔法值,是在最开始的常量定义中提到的。即如下图:
- 魔法值究竟是什么?
在al手册中说是[未经预先定义的常量]。
其他的定义:所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。
魔法值随意出现,主要是影响可读性和代码可维护性。这听起来,象喊口号。
静态常量取代魔法值
if (flag == 100){
// code
}
这个100是什么意思?为啥要和这个数比较?如果这个变量到处出现,放在一个定义处维护,明显容易维护。
static final Integer CHECKED_TYPE = 75;
魔法表达式,就是十分冗长,不好理解。
if(a == 0 && b == 1 && c < 100){
// code
}
如果这一行想表达一个意思,库存已经完了,就提前定义:
boolean isSuccess = a == 0 && b == 1 && c < 100;
if(isSuccess){
// code
}
这样的话,阅读快,一眼就可以看出来这块代码的逻辑。
代码的可读性很重要,你肯定不想看到你接手的代码各种数字符号的,没有任何定义之类的。