qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java中十個常見的違規編碼

          摘要:作者Veera Sundar在清理代碼工作時發現一些常見的違規編碼,因此,Veera Sundar把針對常見的一些違規編碼總結成一份列表,以便幫助Java愛好者提高代碼的質量和可維護性。

            最近,我給Java項目做了一次代碼清理工作。經過清理后,我發現一組常見的違規代碼(指不規范的代碼并不表示代碼錯誤)重復出現在代碼中。因此,我把常見的這些違規編碼總結成一份列表,分享給大家以幫助Java愛好者提高代碼的質量和可維護性。

            這份列表沒有依據任何規則或順序,所有的這些都是通過代碼質量工具包括CheckStyle,FindBugs和PMD檢查出。一起來看下:

            一、Eclipse編譯器提供源代碼格式輸入

            Eclipse提供自動源碼格式選項,并且組織輸入(刪除未使用的代碼)。你可以使用下面的這些快捷鍵進行操作。

            Ctrl + Shift + F——源代碼格式

            Ctrl + Shift + O——組織輸入并刪除未使用的代碼

            代替手動調用這兩個函數,只需根據Eclipse自動格式和自動組織選項,可以隨時保存文件。

            操作步驟,在Eclipse中進入Window -> Preferences -> Java -> Editor -> Save Actions,然后以選定的方式保存,最后檢查Format source code + Organize imports。

            二、避免多個返回(退出點)

            依照你的方法,確保只有一個退出點。不要在同一個地方或多個地方使用返回。比如,下面的代碼,NOT RECOMMENDED(不建議),這是因為有多個退出點(返回語句)。

          1. private boolean isEligible(int age){  
          2.   if(age > 18){  
          3.     return true;  
          4.   }else{  
          5.     return false;  
          6.   }  
          7. }

            下面的代碼有所提升,這是更高版本的。

          1. private boolean isEligible(int age){  
          2.   boolean result;  
          3.   if(age > 18){  
          4.     result = true;  
          5.   }else{  
          6.     result = false;  
          7.   }  
          8.   return result;  
          9. }

            三、簡化if-else

            我寫了幾個實用的方法作為參考,檢查語句條件并且基于該條件返回值。比如,考慮到isEligible方法,正如你之前所看到的:

          1. private boolean isEligible(int age){  
          2.   boolean result;  
          3.   if(age > 18){  
          4.     result = true;  
          5.   }else{  
          6.     result = false;  
          7.   }  
          8.   return result;  
          9. }

            整個方法以一個單一的return語句重新編寫:

          1. private boolean isEligible(int age){  
          2. return age > 18;  
          3. }

            四、不要給Boolean, Integer或者String創建新的實例

            避免給Boolean,Integer,String創建新的實例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的語句與之前的效果基本相同,除了在性能上有所提升。

            五、使用大括號模塊語句

            永遠別忘了使用大括號模塊語句比如if、for、while。這樣做的好處是當你在修改模塊級語句時減少了模糊代碼并且避免引進bug的機會。

            不建議:

          1. if(age > 18)  
          2.   result = true;  
          3. else  
          4.   result = false;

            建議:

          1. if(age > 18){  
          2.   result = true;  
          3. }else{  
          4.   result = false;  
          5. }

           六、以final類型標記方法參數,任何時候都適用

            請記住,以final類型標記方法參數,任何時候都適用。這樣做的好處在于當你不小心修改參數值時,編譯器會給你警告,同時它還能以更好的方式優化編譯器代碼字節。

            建議:

          private boolean isEligible(final int age){ ... }

            七、在UPPERCASE中命名public static final字段

            在UPPERCASE中命名public static final字段(通常也被稱之為常量)。這個可以讓你輕松區分常量字段和局部變量之間的不同。

            不建議:

          public static final String testAccountNo = "12345678";

            建議:

          public static final String TEST_ACCOUNT_NO = "12345678";,

            八、組合成單一的if語句

            在盡可能多的情況下,把多個if語句組合成單一的if語句,比如下面的代碼:

          1. if(age > 18){  
          2.   if( voted == false){  
          3.     // eligible to vote.  
          4.   }  
          5. }

            合并成單一的if語句:

          1. if(age > 18 && !voted){  
          2.   // eligible to vote  
          3. }

            九、Switch應該有default

            始終給Switch語句添加default。

            十、使用常量來避免重復定義相同的字符串值

            如果你在多個地方必須使用字符串,那么使用常量來避免重復定義擁有相同值的字符串。

            比如,看下面的代碼:

          1. private void someMethod(){  
          2.   logger.log("My Application" + e);  
          3.   ....  
          4.   ....  
          5.   logger.log("My Application" + f);  
          6. }

            string literal“我的應用”可以作為常量并且能在代碼中使用。

          1. public static final String MY_APP = "My Application";  
          2.  
          3. private void someMethod(){  
          4.   logger.log(MY_APP + e);  
          5.   ....  
          6.   ....  
          7.   logger.log(MY_APP + f);  
          8. }

          posted on 2012-09-13 10:08 順其自然EVO 閱讀(173) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泾川县| 库伦旗| 宁蒗| 东阳市| 南京市| 丽水市| 花莲县| 扬中市| 日喀则市| 安泽县| 来凤县| 临城县| 东乌珠穆沁旗| 乳山市| 武陟县| 定安县| 简阳市| 正安县| 佛冈县| 共和县| 玉门市| 远安县| 济源市| 安国市| 礼泉县| 集贤县| 明星| 永修县| 房产| 蓬莱市| 凤冈县| 伊金霍洛旗| 临海市| 玉山县| 桓仁| 元江| 青河县| 竹北市| 宜兰市| 加查县| 岚皋县|