清單項目 | 分類 |
---|---|
使用能夠表達實際意圖(Intention-Revealing)的名稱 | 有意義的名稱 |
每個概念只用一個詞 | 有意義的名稱 |
使用方案/問題領域名稱 | 有意義的名稱 |
類應該是比較小的! | 類 |
函數應該是比較小的! | 函數 |
只作一件事 | 函數 |
DRY(Don’t Repeat Yourself)原則,(拒絕重複) | 函數 |
用代碼來解釋本身的作法(譯者注:即代碼註釋) | 註釋 |
肯定應用了代碼格式化 | 格式 |
使用異常而不是返回碼 | 異常 |
不要返回Null | 異常 |
清單項目 | 分類 |
---|---|
若是不用於繼承,使類爲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 | 訪問限制 |
清單項目 | 分類 |
---|---|
避免過度的同步 | 併發 |
保持同步區域比較小 | 併發 |
知道string鏈接的性能狀況 | 綜合編程 |
避免建立不須要的對象 | 建立和銷燬對象 |
清單項目 | 分類 |
---|---|
對能夠恢復的狀況使用已受檢異常(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測試用例 | 測試 |
清單項目 | 分類 |
---|---|
查看靜態代碼分析器的報告來進行類的添加和修改 | 靜態代碼分析 |