代碼檢查細則說明_第1頁
代碼檢查細則說明_第2頁
代碼檢查細則說明_第3頁
代碼檢查細則說明_第4頁
代碼檢查細則說明_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、命名規(guī)范Type類型命名規(guī)范AbstractClassName 抽象類Abstract.*$|.*Factory$ConstantName 常量(static , final 字段)A-ZA-Z0-9*(_A-Z0-9+)*$LocalFinalVariableName 局部的final變量,包括catch中的參數(shù)a-za-zA-Z0-9*$LocalVariableName 局部的非final型的變量,包括catch中的參數(shù)a-za-zA-Z0-9*$MemberName 非static型變量a-za-zA-Z0-9*$MethodName 方法名a-za-zA-Z0-9*$PackageN

2、ame package名a-z+(.a-za-z0-9*)*$ParameterName 方法中的參數(shù)名a-za-zA-Z0-9*$StaticVariableName 僅僅是static型的變量(不包括static final型)a-za-zA-Z0-9*$TypeName 類型(Class或Interface)名A-Za-zA-Z0-9*$JavaDoc注釋類和接口的JavaDoc 方法的JavaDoc變量的JavaDoc長度限制 文件長度:Java文件的行數(shù)不能超過某個值,默認值是1500每行長度:每行的字母個數(shù)不能超過某個值,默認值是120方法長度:方法的行數(shù)不能超過某個值,默認值是1

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

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

5、efault標簽switch語句的default應(yīng)該放在最后檢查case中是否有 break,return ,throw 或 continue語句,確保每次switch只執(zhí)行一個分支Exception限制 try-catch 的嵌套層次,默認值是3不同意throws某些異常,例如:java.lang.Exception、java.lang.Error、java.lang.RuntimeException和your.package.Exception等從catch語句中拋出一個新的異常時,沒有把原來的異常傳入新異常中,會導(dǎo)致異常跟蹤信息的丟失(把異常作為參數(shù)傳入自定義的異常處理類)在當前catc

6、h語句中, 處理被捕獲的異常(記錄異常;拋出新的異常;處理異常), (項目組:不管有沒有進行處理,一定要再次throw出去,重點是指調(diào)用平臺的異常,不要自己吞下去,以方便平臺組用來解決問題)不要捕獲NullPointerException,因為捕獲了之后會把那個異常屏蔽,可能會引起后續(xù)拋出專門難分辨的異常開發(fā)人員不要拋出NullPointerException,因為大伙兒通常會認為那個異常是JVM拋出的,考慮用IllegalArgumentException代替,如此會更清晰,更像是開發(fā)人員發(fā)起的異常不要從finally語句返回值對Java的異常類的使用:不同意使用RuntimeExcepti

7、on等無法通過類名反應(yīng)出異常產(chǎn)生緣故的異常類其它如IllegalArgumentException、ClassCastException等能反應(yīng)出異常緣故的異常類也建議再封裝成模塊自定義的異常類異常類體系每個模塊的異?;惱^承自下面兩個類Checked Exception: mons.exception.SoTowerExceptionRuntime Exception: org.sotower. commons.exception.SoTowerRuntimeException合理使用Checked Exception和Runtime Exception:假如提供的api能通過捕獲的異常處理

8、保證系統(tǒng)的正常運轉(zhuǎn),建議拋出Checked Exception大部分情況差不多上使用Runtime Exception對外公布為Runtime Exception不能修改為Checked Exception,可能造成用戶已有代碼出錯BSP、BPM對外提供的接口必須使用try、catch、throw方式進行日志記錄后再轉(zhuǎn)拋,其它核心代碼的catch塊中建議盡量加入日志記錄(如操縱器部分),日志使用apache commons loggingimport mons.logging.Log;import mons.logging.LogFactory;private static final Log

9、 log = LogFactory.getLog(Xxxxx.class);log.error(詳細的異常信息描述。, ex);/ 不建議使用的2種方式/ log.error(詳細的異常信息描述。);/ log.error(ex);捕獲的異常在保證系統(tǒng)能接著正常執(zhí)行邏輯的前提下,應(yīng)進行處理,而不要接著throw對捕獲的異常(catch代碼塊中):假如沒有接著throw異常,需加上注釋講明不接著throw的緣故,同時通過log.warn(處理的異常信息描述。, ex)的方式記錄假如接著throw異常,建議轉(zhuǎn)為平臺的異常類異常信息描述得足夠詳盡,描述異常信息時:應(yīng)包含各種有用信息,如方法傳入的參數(shù)

10、、關(guān)鍵的類屬性、對象屬性和臨時變量等能取到的關(guān)于分析異常有用信息,包裝到異常信息描述中應(yīng)清晰易明白,用戶能依照異常的描述信息進行排錯處理public void test(String arg1, String arg2) try System.out.println(arg1 + arg2); catch (Exception ex) / 拼接內(nèi)容較多時,使用StringBuilder或StringBuffer/ 異常信息應(yīng)足夠詳盡,假如有關(guān)鍵的對象屬性,也應(yīng)加入到信息描述中String exMsg = 進行打印輸出操作時出錯。出錯時的方法參數(shù)為 + arg1 + , + arg2 + 。;/

11、 BSP和BPM對外的接口以及平臺其它核心部分需進行日志記錄log.error(exMsg, ex);/ 將原始異常包裝為平臺的異常再拋出,兩個參數(shù)throw new BspTestRuntimeException(exMsg, ex);將e.printStackTrace()或System.out.println(e.getMessage()等直接輸出到操縱臺方式的代碼替換為日志輸出的方式程序的處理邏輯盡量不依靠于異常,異常的性能不行每個模塊(BSP、BPM、SoTI)有自己的異?;悾赢惓n惱^承自各自模塊的基類定義的異常類名應(yīng)清晰直觀,如UserNotFoundException、Inv

12、alidPerformerException等if-else限定if-else的嵌套層數(shù),默認值是1,最佳值是2把if-else和循環(huán)語句放在括號中循環(huán)限定for循環(huán)的嵌套層數(shù),最佳值是2不要在for循環(huán)體中給操縱循環(huán)的變量賦值不要在循環(huán)中創(chuàng)建新的對象String檢查內(nèi)容相同的字符串:確保一個文件中內(nèi)容相同的字符串可不能多次重復(fù)出現(xiàn),建議使用常量來代替多次重復(fù)出現(xiàn)的字符串,默認只同意出現(xiàn)1次不要使用String對象禁止采納+或+=拼接字符串,調(diào)用StringBuffer.append()代替接口設(shè)計不要僅僅為了定義常量而定義一個接口或抽象類方法的返回類型盡量使用接口而不要使用實現(xiàn)類SQL在使用

13、Connection, Statement, and ResultSet等資源之后要關(guān)閉不要在for循環(huán)中執(zhí)行數(shù)據(jù)庫操作日志在日志中記錄棧跟蹤信息時,要確保全部的棧跟蹤信息被輸出考慮用logger代替System.(out|err).print考慮用logger代替printStackTrace()賦值盡量不要進行內(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_FILE_TYP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論