Java Code Review清單

jopen 10年前發布 | 19K 次閱讀 Java Android開發 移動開發

整潔的代碼

</tr> </thead>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

*參考自:http://techbus.safaribooksonline.com/book/software-engineering-and-development/agile-development/9780136083238

</blockquote>

安全

清單項目 分類
使用可以表達實際意圖(Intention-Revealing)的名稱 有意義的名稱
每一個概念只用一個詞 有意義的名稱
使用方案/問題領域名稱 有意義的名稱
類應該是比較小的!
函數應該是比較小的! 函數
只做一件事 函數
DRY(Don’t Repeat Yourself)原則,(拒絕重復) 函數
用代碼來解釋自己的做法(譯者注:即代碼注釋) 注釋
確定應用了代碼格式化 格式
使用異常而不是返回碼 異常
不要返回Null 異常

</tr> </thead>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

*參考自: http://www.oracle.com/technetwork/java/seccodeguide-139067.html

</blockquote>

性能

清單項目 分類
如果不用于繼承,使類為final 基礎
避免重復代碼 基礎
權限限制:程序應該運行在保證功能正常的最小權限模式下。 基礎
最小化類和成員的可訪問性 基礎
注釋出安全相關的信息 基礎
系統的輸入必須檢查是否有效和在允許范圍內 拒絕服務(Denial of Service)
避免對于一些不尋常行為的過分日志 拒絕服務(Denial of Service)
在任何情況下都釋放資源(流,連接等等) 拒絕服務(Denial of Service)
從異常中清除敏感信息(暴露文件路徑,系統內部相關,配置)P 私密信息(Confidential Information)
不要把高度敏感的信息寫到日志 私密信息(Confidential Information)
考慮把高度敏感的信息在使用后從內存中清除 私密信息(Confidential Information)
限制包,類,接口,方法和域的可訪問性 可訪問性的擴展(Accessibility Extensibility)
限制類和方法的可擴展性(通過使它為final) 可訪問性的擴展(Accessibility Extensibility)
檢驗輸入(有效的數據,大小,范圍,邊界情況等等) 輸入檢驗(Input Validation)
把從不可信對象得到的輸出作為輸入來檢驗 輸入檢驗(Input Validation)
為native方法定義包裝類(而不是定義native方法為pulibc) 輸入檢驗(Input Validation)
把從不可信對象得到的輸出作為輸入來對待 可變性
使public static域為final(避免調用方(caller)修改它的值) 可變性
避免暴露敏感類的構造函數 對象構造
避免安全敏感類的序列化 序列化反序列化(Serialization Deserialization)
通過序列化來保護敏感數據 序列化反序列化(Serialization Deserialization)
小心地緩存潛在的特權操作結果 序列化反序列化(Serialization Deserialization)
只有在需要的時候才使用JNI 訪問限制

</tr> </thead>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

*參考自: http://techbus.safaribooksonline.com/book/programming/java/9780137150021

</blockquote>

綜合(譯者注:原文中的作者把checklist和category對應的列搞錯了,譯文中已修正)

清單項目 分類
避免過分的同步 并發
保持同步區域比較小 并發
知道string連接的性能情況 綜合編程
避免創建不需要的對象 創建和銷毀對象

</tr> </thead>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

*參考自: http://techbus.safaribooksonline.com/book/programming/java/9780137150021

</blockquote>

靜態代碼分析

清單項目 分類
對可以恢復的情況使用已受檢異常(checked exceptions),對于程序錯誤使用運行時異常(runtime exceptions) 異常
更多地使用標準異常 異常
不要忽略異常 異常
檢查參數的有效性 方法
返回空數組或集合,而不是null 方法
最小化類和成員的可訪問性 類和接口
在pulibc類中,使用訪問器方法(accessor methods)(譯者注:訪問器方法即我們平常用的get/set方法)而不是public域 類和接口
最小化本地變量的范圍 綜合編程
通過接口引用對象 綜合編程
遵循廣泛接受的命名規則 綜合編程
避免使用finalizer 創建和銷毀對象
當你重寫equals時總是重寫hashCode 綜合編程
總是重寫toString 綜合編程
使用枚舉來代替int常量 枚舉和注解(Annotations)
使用標記接口(marker interface)(譯者注:標記接口是一種沒有任何行為的接口,實現它只是為了讓實現類屬于某種類型,如JDK中的Serializable,Cloneable等)來定義類型 枚舉和注解(Annotations)
對共享可變的數據使用同步訪問 并發
使用executors而不是task和thread 并發
注釋中描述線程安全情況 并發
存在有效的JUnit/JBehave測試用例 測試

</tr> </thead>

</tr> </tbody> </table>
原文鏈接: dzone 翻譯: ImportNew.com - 陳 曉舜
譯文鏈接: http://www.importnew.com/12511.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
清單項目 分類
查看靜態代碼分析器的報告來進行類的添加和修改 靜態代碼分析
  • sesese色