?? 常見錯誤
??? ??? 不符合團隊代碼、設計規(guī)范
??? ??? 循環(huán)的一次操作中多次調用iterator.next()
??? ??? 數(shù)據(jù)庫、流等資源未關閉
??? ??? HttpSession內存儲的對象 不可序列化
??? ??? 空指針引用
??? ??? 可能的空指針引用
??? ??? 正則表達式格式錯誤
??? ??? PreparedStatement的參數(shù)設置/ ResultSet內容訪問,從索引0開始
??? ??? 忽略方法返回值, 如 String a=.. ; a.trim();
??? ??? 使用new Boolean(true)
??? ??? 調用 new String(string )
??? ??? 使用+連接String
??? ??? 調用 gc資源回收 代碼
??? ??? 自增量的覆蓋 i=i++;
??? ??? Serializable對象包涵Non-transient non-serializable對象
??? ??? Initialization circularity 循環(huán)初始化過程
??? ??? Date 類型set函數(shù)的參數(shù)范圍錯誤, 月份為[0,11]...
??? ??? 絕對路徑的硬編碼 File("/home/dannyc/deployment");
??? ??? java.lang.Integer、 java.lang.Float、或String對象 比較 使用==或者 !=
??? ??? 測試浮點數(shù)的相等性,使用if ( Math.abs(x - y) < .0000001 )
??? ??? 數(shù)組對象比較使用equals, 應使用 java.util.Arrays.equals(Object[], Object[]).
??? ??? 對象定義了equal、 tostring、或者hashcode方法
??? ???
??? ??? jsp錯誤
??? 不良習慣
??? ??? 不符合Camel命名原則
??? ??? 重復代碼
??? ??? 三值邏輯
??? ??? 無用的代碼流程控制
??? ??? 非null值的null判斷, null比較
??? ??? 調用 String.equals("")
??? ??? String對象上調用toString()
??? ??? 整數(shù)除的結果轉換為float/double
??? ??? 不需要的instanceof判斷 / 沒必要的對象cast操作
??? ??? 無用、未用的 field, parameters, local variable
??? ??? 從未被調用的方法
??? ??? 整數(shù)是否為奇數(shù)判斷 x % 2 == 1
??? ??? 方法返回null
??? ??? 調用subString(0)
??? ??? PreparedStatement使用非final的sql String 對象
??? ??? public finalize()
常用的metics
??? McCabe 復雜性
??? 代碼嵌套深度
??? 代碼圈復雜性
建議
??? Comparator實現(xiàn) Serializable接口
??? 考慮緩存常用的值,比如關于常量的計算值
??? 避免深層次 if 嵌套語句
解決??
??? 嚴格執(zhí)行編程規(guī)范
??? 使用優(yōu)秀、經(jīng)過驗證的框架、可重用包、思想
??? 代碼評審 / 結對編程 / 代碼質量自動檢查工具
??? 簡單編程
??? 測試驅動開發(fā)
參考:?
? findbugs: http://findbugs.sourceforge.net/
? metrics: http://metrics.sourceforge.net/
? pmd: http://pmd.sourceforge.net/
?
??? ??? 不符合團隊代碼、設計規(guī)范
??? ??? 循環(huán)的一次操作中多次調用iterator.next()
??? ??? 數(shù)據(jù)庫、流等資源未關閉
??? ??? HttpSession內存儲的對象 不可序列化
??? ??? 空指針引用
??? ??? 可能的空指針引用
??? ??? 正則表達式格式錯誤
??? ??? PreparedStatement的參數(shù)設置/ ResultSet內容訪問,從索引0開始
??? ??? 忽略方法返回值, 如 String a=.. ; a.trim();
??? ??? 使用new Boolean(true)
??? ??? 調用 new String(string )
??? ??? 使用+連接String
??? ??? 調用 gc資源回收 代碼
??? ??? 自增量的覆蓋 i=i++;
??? ??? Serializable對象包涵Non-transient non-serializable對象
??? ??? Initialization circularity 循環(huán)初始化過程
??? ??? Date 類型set函數(shù)的參數(shù)范圍錯誤, 月份為[0,11]...
??? ??? 絕對路徑的硬編碼 File("/home/dannyc/deployment");
??? ??? java.lang.Integer、 java.lang.Float、或String對象 比較 使用==或者 !=
??? ??? 測試浮點數(shù)的相等性,使用if ( Math.abs(x - y) < .0000001 )
??? ??? 數(shù)組對象比較使用equals, 應使用 java.util.Arrays.equals(Object[], Object[]).
??? ??? 對象定義了equal、 tostring、或者hashcode方法
??? ???
??? ??? jsp錯誤
??? 不良習慣
??? ??? 不符合Camel命名原則
??? ??? 重復代碼
??? ??? 三值邏輯
??? ??? 無用的代碼流程控制
??? ??? 非null值的null判斷, null比較
??? ??? 調用 String.equals("")
??? ??? String對象上調用toString()
??? ??? 整數(shù)除的結果轉換為float/double
??? ??? 不需要的instanceof判斷 / 沒必要的對象cast操作
??? ??? 無用、未用的 field, parameters, local variable
??? ??? 從未被調用的方法
??? ??? 整數(shù)是否為奇數(shù)判斷 x % 2 == 1
??? ??? 方法返回null
??? ??? 調用subString(0)
??? ??? PreparedStatement使用非final的sql String 對象
??? ??? public finalize()
常用的metics
??? McCabe 復雜性
??? 代碼嵌套深度
??? 代碼圈復雜性
建議
??? Comparator實現(xiàn) Serializable接口
??? 考慮緩存常用的值,比如關于常量的計算值
??? 避免深層次 if 嵌套語句
解決??
??? 嚴格執(zhí)行編程規(guī)范
??? 使用優(yōu)秀、經(jīng)過驗證的框架、可重用包、思想
??? 代碼評審 / 結對編程 / 代碼質量自動檢查工具
??? 簡單編程
??? 測試驅動開發(fā)
參考:?
? findbugs: http://findbugs.sourceforge.net/
? metrics: http://metrics.sourceforge.net/
? pmd: http://pmd.sourceforge.net/
?