類型:
大小:
評分:
平台:
標簽:
對於JAva程序員來說,編寫出高質量的代碼是非常重要的,那麼普通的代碼和優秀代碼到底有什麼區別呢?怎麼才能寫出漂亮的代碼出來呢?接下來嗨客小編就來詳細為大家介紹一下吧:
代碼質量所涉及的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檢查一下:
一個我們平時再普通不過的一個類,被checkstyle弄出這麼多問題,情何以堪,我們來看看究竟是什麼情況?
看一下這些警告信息:
line 1、,說缺少package-info.java文件。
line 2、,說第一句注釋要以“.”結尾。
line 30、,缺少java doc注釋。
line 35、,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