0.前言
在使用一些数字的时候经常会出现请魔法值的提示,这个让初学者我很懵,啥意思,一个数字还能成为魔法值?到底有啥魔法呢?一起去探寻一下。
1.问题分析
这个提示一般都是在一些数字下面,比如如下代码:
public static void main(String[] args) {
//10下面提示
for (int i=0;i<10;i++){
System.out.println(i);
}
我点进去看这个提示的完整信息得到了不允许任何魔法值(即未经定义的常量)直接出现在代码中。 也就是说这些数字是未经定义的常量。
2.问题解决
既然不让未经定义的常量直接出现,那么我就先定义下,再调用一下,代码如下:
public static void main(String[] args) {
int peopleCount = 10;
for (int i = 0; i < peopleCount; i++) {
System.out.println(i);
}
}
此时就没有提示了。
3.出现的原因
这应该就是大家最关心的了,我们想一下阿里巴巴Java开发规范的目的是啥,最重要的一点就是提高程序可读性。如果按照第一个那样写,这个10代表的是什么意思?为什么是10,而不是9呢?此时如果想了解还需要翻阅注释或者文档,但如果我提前定义了这个常量peopleCount,我就知道了,原来这里是想循环输出每个人的序号。而前面这个写法没有这个直观。这就是这样提示的原因,由衷的感觉很有必要。
4.总结
这次我对这个手册更加佩服了,初学Java(包括绝大多数编程语言)对于常量的定义都是非常随意的直接写出来,想循环几次就写几,没有考虑过这个数字后面的含义,这给阅读程序的人带来极大的阅读困难,不利于团队协作。所以我感觉不要使用魔法值很有必要,我在以后的团队开发中也要注意这一点,使用常量之前先定义,并命名规范。这样才能真正的适应以后的企业级开发。