代碼檢查規(guī)則介紹(doc7頁)(優(yōu)質(zhì)版)_第1頁
代碼檢查規(guī)則介紹(doc7頁)(優(yōu)質(zhì)版)_第2頁
代碼檢查規(guī)則介紹(doc7頁)(優(yōu)質(zhì)版)_第3頁
代碼檢查規(guī)則介紹(doc7頁)(優(yōu)質(zhì)版)_第4頁
代碼檢查規(guī)則介紹(doc7頁)(優(yōu)質(zhì)版)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1.命名規(guī)范type命名規(guī)范abstractclassname抽象類aabstract.*$|a.*factory$constantname常量(static , final字段)aa-za-z0-9*(_a-z0-9+)*$localfinalvariablename局部的final變重,包括catch中的參數(shù)aa-za-za-z0-9*$localvariablename局部的非final型的變重,包括catch中 的參數(shù)aa-za-za-z0-9*$membername非static 型變量aa-za-za-z0-9*$methodname方法名aa-za-za-z0-9*$packag

2、enamepackage名aa-z+(.a-za-z0-9*)*$parametername方法中的參數(shù)名aa-za-za-z0-9*$staticvariablename僅僅是static 型的變量(不包括static final 型)aa-za-za-z0-9*$typename類型(class 或 interface)名aa-za-za-z0-9*$2 . javadoc注釋類和接口的javadoc方法的javadoc變量的javadoc3 .長度限制文件長度:java文件的行數(shù)不能超過某個值,默認值是1500每行長度:每行的字母個數(shù)不能超過某個值,默認值是120方法長度:方法的行數(shù)不能

3、超過某個值,默認值是150方法的參數(shù)個數(shù):方法參數(shù)的個數(shù)不能超過某個值,默認值是7return語句的數(shù)量:方法中 return語句的個數(shù)不能超過某個值,默認值是24 .重復的代碼檢查內(nèi)容重復的代碼:當相同代碼的行數(shù)超過某個彳1時,就認為是重復的代碼,默認值是155 .多余的不必要的括號不必要的圓括號:檢查不必要的圓括號 (,)。”例如:if(true)6 .未簡化的(b = true), b | true, !false未被簡化的條件表達式:檢查過度復雜的條件表達式,例如:未被簡化的布爾返回值:檢查未被簡化的boolean返回語句,例如:if (valid()return false;else

4、return true可以簡化成:return !valid();7 .空白區(qū)域(empty block)檢查包含起來的區(qū)域是否為空8 . 空語句(empty statement)檢查是否有空的語句;9 .比較equals和hashcode方法:檢查一個類是否同時重寫了equals和hashcode方法子類在重寫hashcode()方法時,要調(diào)用父類的 hashcode()在實現(xiàn)equals()方法時要使用instanceof操作符要把常量放在 equals()方法的左邊,例如:hello”.equals(s),而不是 s.equals( hello)使用equals()比較對象的引用,而不要

5、使用=或!=10 . switch為switch語句提供default標簽switch語句的default應(yīng)該放在最后檢查case中是否有 break, return , throw 或 continue語句,確保每次 switch只執(zhí)行一個分支11 . exception限制try-catch的嵌套層次,默認值是3不允許 throws 某些異常, 例如:java.lang.exception、java.lang.error、java.lang.runtimeexception 和 your.package.exception從catch語句中拋出一個新的異常時,沒有把原來的異常傳入新異常中,

6、會導致異常跟蹤信息的丟失(把異常作為參數(shù)傳入自定義的異常處理類)在當前catch語句中,處理被捕獲的異常(記錄異常;拋出新的異常;處理異常) ,(項目組:不管有沒有進行處理,一定要再次throw出去,重點是指調(diào)用平臺的異常,不要自己吞下去,以方便平臺組用來解決問題)不要才t獲nullpointerexception ,因為捕獲了之后會把這個異常屏蔽,可能會引起后續(xù)拋出很難分辨的異常開發(fā)人員不要拋出nullpointerexception ,因為大家通常會認 為這個異常是jvm 拋出的,考慮用illegalargumentexception代替,這樣會更清晰,更像是開發(fā)人員發(fā)起的異常不要從fin

7、ally語句返回值1 .對java的異常類的使用:不允許使用runtimeexception等無法通過類名反應(yīng)出異常產(chǎn)生原因的異常類其它如illegalargumentexception、classcastexception等能反應(yīng)出異常原因的異常類也建議再封裝成模塊自定義的異常類2 .異常類體系每個模塊的異?;惱^承自下面兩個類checked exception: mons.exception.sotowerexceptionruntime exception: org.sotower. commons.exception.sotowerruntimeexceptionsotowerexce

8、ptionixxxxruntimeexception3 . 合理使用 checked exception 和 runtime exception :如果提供的api能通過捕獲的異常處理保證系統(tǒng)的正常運轉(zhuǎn),建議拋出checked exception大部分情況都是使用runtime exception4 .對外發(fā)布為 runtime exception不能修改為 checked exception ,可能造成用戶已有代碼出錯5 . bsp、bpm對外提供的接口必須使用try、catch 、throw 方式進行日志記錄后再轉(zhuǎn)拋,其它核心代碼的catch塊中建議盡量加入日志記錄(如控制器部分),日志使

9、用apache commons loggingimport mons.logging.log;import mons.logging.logfactory;private static final log log = logfactory. getlog (xxxxx. class );log .error(詳細的異常信息描述。,ex);/不建議使用的2種方式/log.error(詳細的異常信息描述。);/ log.error(ex);6 .捕獲的異常在保證系統(tǒng)能繼續(xù)正常執(zhí)行邏輯的前提下,應(yīng)進行處理,而不要繼續(xù)throw7 .對捕獲的異常(catch 代碼塊中):如果沒有繼續(xù)throw 異常,

10、需加上注釋說明不繼續(xù) throw的原因,同時通過log.warn(處理的異常信息描述。,ex)的方式記錄如果繼續(xù)throw異常,建議轉(zhuǎn)為平臺的異常類8 .異常信息描述得足夠詳盡,描述異常信息時:應(yīng)包含各種有用信息,如方法傳入的參數(shù)、關(guān)鍵的類屬性、對象屬性和臨時變量等能取到的對于分析異常有 用信息,包裝到異常信息描述中應(yīng)清晰易懂,用戶能根據(jù)異常的描述信息進行排錯處理public void test(string argl, string arg2) try system. out .println(arg1 + arg2); catch (exception ex) / 拼接內(nèi)容較多時,使用 s

11、tringbuilder 或stringbuffer/異常信息應(yīng)足夠詳盡,如果有關(guān)鍵的對象屬性,也應(yīng)加入到信息描述中string exmsg =進行打印輸出操作時出錯。出錯時的方法參數(shù)為+ arg1 +, + arg2 +。/ bsp 和bpm寸外的接口以及平臺其它核心部分需進行日志記錄 log .error(exmsg, ex);/將原始異常包裝為平臺的異常再拋出,兩個參數(shù) throw new bsptestruntimeexception(exmsg, ex);9 .將 e.printstacktrace()或 system.out.println(e.getmessage()等直接輸出到

12、控制臺方式的代碼替換為日志輸出的方式10 .程序的處理邏輯盡量不依賴于異常,異常的性能不好11 .每個模塊(bsp、bpmk soti )有自己的異?;悾赢惓n惱^承自各自模塊的基類12 .定義的異常類名應(yīng)清晰直觀,如 usernotfoundexception 、invalidperformerexception等12. if-else限定if-else的嵌套層數(shù),默認值是1,最佳值是2把if-else和循環(huán)語句放在括號中13. 循環(huán)限定for循環(huán)的嵌套層數(shù),最佳值是2不要在for循環(huán)體中給控制循環(huán)的變量賦值不要在循環(huán)中創(chuàng)建新的對象14. string檢查內(nèi)容相同的字符串:確保一個文件中內(nèi)

13、容相同的字符串不會多次重復出現(xiàn),建議使用常量來代替多次重復出現(xiàn)的字符串,默認只允許出現(xiàn)1 次不要使用 string 對象禁止采用 +或+=拼接字符串,調(diào)用 stringbuffer.append() 代替15. 接口設(shè)計不要僅僅為了定義常量而定義一個接口或抽象類方法的返回類型盡量使用接口而不要使用實現(xiàn)類16. sql在使用connection, statement, and resultset 等資源之后要關(guān)閉不要在for 循環(huán)中執(zhí)行數(shù)據(jù)庫操作17. 日志在日志中記錄棧跟蹤信息時,要確保全部的棧跟蹤信息被輸出考慮用logger 代替system.(out|err).print考慮用logger

14、 代替printstacktrace()18. 賦值盡量不要進行內(nèi)部賦值操作,例如: string s = integer.tostring(i = 2);代碼中不要出現(xiàn)魔法數(shù),例如: filetype = 0; 其中 0表示的到底是什么類型,讓人無法看懂。建議先用常量定義類型public static final int text_file_type = 0;public static final int doc_file_type = 1;public static final int xsl_file_type = 2;然后再給 filetype 賦值 filetype= text_fi

15、le_type;19. 數(shù)組與集合不要用null代替空數(shù)組返回,創(chuàng)建一個空的數(shù)組返回不要用null代替枚舉類型返回,創(chuàng)建一個空的枚舉對象返回不要用null代替集合返回,創(chuàng)建一個空的集合對象返回20. 可移植性在創(chuàng)建java.io.file 時,不要硬編碼文件分隔符不要使用硬編碼n和r作為換行符在應(yīng)用中硬編碼ip 會使應(yīng)用不能部署到其他環(huán)境21. 其他禁止使用的表達式,例如;禁止在代碼中使用 system.out.println檢查項目中多余的沒有被調(diào)用的方法生活不是等待風暴過去,而是學會在雨中翩翩起舞 ,不要去考慮自己能夠走多快,只要知道自己在不斷努力向前就行,路對了,成功就不遠了。放棄了,就不該后悔。失去了,就不該回憶。放下該放下,退出那沒結(jié)局的劇。我們需要一點點的眼淚去洗掉眼中的迷霧,一點點的擁抱去療愈受傷的心,一點點的休息去繼續(xù)前行,少壯不努力,老大徒傷悲,每個人的人生都是不一樣的,處同樣的位置,也是有人哭,有人笑,有人沉默。窮人缺什么:表面缺資金,本質(zhì)缺野心,腦子缺觀念,機會缺了解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論