嗨客手機站:值得大家信賴的手機軟件遊戲站! 遊戲集 | 推薦文章 | 最新文章 | 熱點文章 | 下載排行 | 評分排行 | 安卓軟件 | IOS軟件
單機遊戲網絡遊戲遊戲預告遊戲評測裝機必備

關注嗨客手機app

禮包、遊戲、app應有盡有

您的位置:首頁電腦教程網頁編程 → 怎樣才能編寫高質量的java代碼

  對於JAva程序員來說,編寫出高質量的代碼是非常重要的,那麼普通的代碼和優秀代碼到底有什麼區別呢?怎麼才能寫出漂亮的代碼出來呢?接下來嗨客小編就來詳細為大家介紹一下吧:

怎樣才能編寫高質量的java代碼[多圖]圖片1

    代碼質量所涉及的5個方麵,編碼標準、代碼重複、代碼覆蓋率、依賴項分析、複雜度分析。這5方麵很大程序上決定了一份代碼的質量高低。我們分別來看一下這5方麵:

編碼標準:這個想必都很清楚,每個公司幾乎都有一份編碼規範,類命名、包命名、代碼風格之類的東西都屬於其中。

代碼重複:顧名思義就是重複的代碼,如果你的代碼中有大量的重複代碼,你就要考慮是否將重複的代碼提取出來,封裝成一個公共的方法或者組件。

代碼覆蓋率:測試代碼能運行到的代碼比率,你的代碼經過了單元測試了嗎?是不是每個方法都進行了測試,代碼覆蓋率是多少?這關係到你的代碼的功能性和穩定性。

依賴項分析:你的代碼依賴關係怎麼樣?耦合關係怎麼樣?是否有循環依賴?是否符合高內聚低耦合的原則?通過依賴項分析可以辨別一二。

複雜度分析:以前有人寫的程序嵌套了10層 if else你信嗎?圈複雜度之高,讓人難以閱讀。通過複雜度分析可以揪出這些代碼,要相信越優秀的代碼,越容易讀懂。

    上麵解釋了代碼質量相關的5個方麵,在實際開發環境中,已經有很多工具為我們解決以上5個方麵的問題,下列5個eclipse插件分別對這5個問題有很好的支持:

編碼標準:CheckStyle  插件URL:http://eclipse-cs.sourceforge.net/update/

代碼重複:PMD的CPD  插件URL:http://pmd.sourceforge.net/eclipse/

代碼覆蓋率:Eclemma 插件URL:http://update.eclemma.org

依賴項分析:JDepend 插件URL:http://andrei.gmxhome.de/eclipse/

複雜度分析:Eclipse Metric  插件URL:http://metrics.sourceforge.net/update

注:某些插件需要科學上網才能更新

編碼標準(CheckStyle的使用)

    在eclipse上安裝好了CheckStyle插件後,我們來建一個類用它跑一下。這個類很簡單,一個常見的用戶實體,包含了id,用戶名、密碼、郵件等屬性,並包含get set方法,一個標準的POJO。運行CheckStyle檢查一下:

怎樣才能編寫高質量的java代碼[多圖]圖片2

一個我們平時再普通不過的一個類,被checkstyle弄出這麼多問題,情何以堪,我們來看看究竟是什麼情況?

看一下這些警告信息:

line 1、怎樣才能編寫高質量的java代碼[多圖]圖片3,說缺少package-info.java文件。

line 2、怎樣才能編寫高質量的java代碼[多圖]圖片4,說第一句注釋要以“.”結尾。

line 30、怎樣才能編寫高質量的java代碼[多圖]圖片5,缺少java doc注釋。

line 35、怎樣才能編寫高質量的java代碼[多圖]圖片6,getId不是繼承的方法,必須指定abstract,final或空。另外也缺少java doc注釋。

    這個類基本就這四類毛病,缺少package-info.java文件,這個文件是做什麼的呢?他是用來描述包注釋的類,有一定的特殊性,要想詳細了解請百度。如果對你的項目沒有太大的影響,可以忽略它。配置CheckStyle的方法我們等會再說。第一句注釋要以“.”結尾,這看你的習慣,你確定需要這個,你就保留,不需要就忽略。缺少java doc,對於java類的屬性來說,注釋是必要的,所以這個要保留。不是繼承的方法,需要加上final關鍵字,如果你有這個習慣,就保留,反之忽略。

我們這裏隻是建立了一個最簡單的類用CheckStyle來檢查,隨著你的類代碼越來越多,邏輯越來越複雜,CheckStyle能檢查出來的毛病也越來越多。常見的CheckStyle錯誤有這些:

1.Type is missing a javadoc commentClass  
缺少類型說明
2.“{” should be on the previous line
“{” 應該位於前一行
3.Methods is missing a javadoc comment
方法前麵缺少javadoc注釋
4.Expected @throws tag for “Exception”
在注釋中希望有@throws的說明
5.“.” Is preceeded with whitespace “.”
前麵不能有空格
6.“.” Is followed by whitespace“.”
後麵不能有空格
7.“=” is not preceeded with whitespace
“=” 前麵缺少空格
8.“=” is not followed with whitespace  
“=” 後麵缺少空格
9.“}” should be on the same line   
“}” 應該與下條語句位於同一行
10.Unused @param tag for “unused”
沒有參數“unused”,不需注釋
11.Variable “CA” missing javadoc
變量“CA”缺少javadoc注釋
12.Line longer than 80characters  
行長度超過80
13.Line contains a tab character
行含有”tab” 字符
14.Redundant “Public” modifier
冗餘的“public” modifier
15.Final modifier out of order with the JSL
suggestionFinal modifier的順序錯誤
16.Avoid using the “.*” form of import
Import格式避免使用“.*”
17.Redundant import from the same package
從同一個包中Import內容
18.Unused import-java.util.list
Import進來的java.util.list沒有被使用
19.Duplicate import to line 13
重複Import同一個內容
20.Im

50%

我支持

0

50%

我反對

0

猜你喜歡

遊戲禮包

  • 禦天感恩節禮包

    金子*388,升星石*50,綢緞*500,神秘寶石袋*10

    有效時間:2017-11-23至2018-12-31 領取情況:150人領取剩0

    立即領取
  • 屠龍傳世開學禮包

    天山雪蓮(大)*20、深海靈礁(大)*20、黑鐵禮盒*10、寶石禮盒*10、神魔令*30、洗煉石*30

    有效時間:2017-2-21至2017-12-31 領取情況:0人領取剩100%

    立即領取

網友評論

發表評論

(您的評論需要經過審核才能顯示)

查看所有0條評論>>