要做到真正整潔的代碼,至少要將注意力上升到類的層面
10.1 類的組織
- 根據標準的 Java 約定,類的標準組織應該如下所示
public class ClassName {
// 公共靜態變量
// 私有靜態變量
// 私有實體變量
// 公共函數
// 私有工具函數
}
10.2 類應該短小
- 在設計類時,首要規則就是要儘可能短小,不要有多餘的、不屬於這個類的內容
- 要確定這個類是不是太長了,最關鍵的是要看這個類的類名是不是能精確的表達這個類所有的內容
- 如果不能,則說明這個類需要被拆分
10.2.1 單一權責原則( SRP )
- 類或模塊應該有且只有一條被修改的理由
- 系統應該有許多短小的類組成,而不是由少量巨大的類組成
- 每個小類封裝一個權責,只存在一個被修改的原因
- 只與少量其他類一起協同達成期望的系統行爲
10.2.2 內聚
- 如果一個類中的每個變量都被每個方法所使用,則說明該類具有最大的 內聚性
- 內聚性高,則說明類中的方法和變量互相依賴、互相結合成一個邏輯整體
10.2.3 保持內聚性就會得到許多短小的類
- 當類喪失內聚性時,就應該被拆分
- 拆分之後的多個小類應該各自擁有內聚性
10.3 爲了修改而組織
- 在整潔的系統中,通過對類進行組織,從而降低修改的風險
- 類應該遵循 開放-閉合原則( OCP ) :對擴展開放,對修改封閉
- 在理想系統中,通過擴展系統添加新特性,而不是修改現有代碼
- 部件之間的解耦代表着系統中的元素互相隔離得很好,從而促使系統中的每個元素更容易被理解
- 通過降低耦合度,可以讓代碼更遵循 依賴倒置原則( Dependency Inversion Principle ,DIP )
- 類應該依賴於抽象,而不是依賴於具體細節