畢業后,我導師跟我說,寫代碼不要用魔法數字,不要用魔法數字。最初只是知道,並沒有深切的體驗。隨着寫代碼多了,就有體會了。
畢業出來了,從最開始一拿到需求就忙着開發,但現在拿到需求,看看需求有什么漏洞,然后羅列出需求的業務邏輯。實現常用功能基本沒有技術障礙了。也知道寫個好代碼是那么難,那么有意義。很經常看到這樣的代碼.
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跟着的業務邏輯。清晰可見。