毕业后,我导师跟我说,写代码不要用魔法数字,不要用魔法数字。最初只是知道,并没有深切的体验。随着写代码多了,就有体会了。
毕业出来了,从最开始一拿到需求就忙着开发,但现在拿到需求,看看需求有什么漏洞,然后罗列出需求的业务逻辑。实现常用功能基本没有技术障碍了。也知道写个好代码是那么难,那么有意义。很经常看到这样的代码.
String name="xiaoming"; if(name.equals("xiaoming")){ System.out.println(name); }
代码业务逻辑也没有错,但是直接拿字符串来比较以前我经常做,那天需求需要把'xiaoming'改为其他的名字,比如'xiaohong'。哪怕是自己写的代码,如果多处用了这样的代码,修改起来都担心有某些地方没有修改到。
用常量或者参数,不用魔法数字或者字符串,我知道两个好处。这两个好处,我目前深深地体会到了。
1)代码更容易看懂,代码逻辑更清晰。看到代码就知道意义。业务逻辑中常用数字代表特定的意义。比如1:开启,0:关闭。如果直接看到数字,什么鬼?我都不知道是什么。
2)代码维护和优化更容易。如果随便用魔法数字,那么如果要修改,我自己都怕,鬼知道,这个魔法参数,和其他代码上的联系。比如,一个地方的数字“1”和另一个地方的数字“1”,这连个“1”他们是亲戚吗?谁知道!
我举个例子
private static final int open=1; private static final int close=0; public static void main(String[] args) { // TODO Auto-generated method stub int status=0; if(status == open){ System.out.println("状态开启。。"); } }
上面写的代码,一看就知道 表示状态为open的时候,if跟着的业务逻辑。清晰可见。