(29)讓系統功能在窄而深的繼承體系中垂直分布。
(30)在實現語義約束時,最好根據類定義來實現。這常常會導致類泛濫成災,在這種情況下,約束應當在類的行為中實現,通常是在 構造函數中實現,但不是必須如此。
(31)在類的構造函數中實現語義約束時,把約束測試放在構造函數領域所允許的盡量深的包含層次中。
(32)約束所依賴的語義信息如果經常改變,那么最好放在一個集中式的第3方對象中。
(33)約束所依賴的語義信息如果很少改變,那么最好分布在約束所涉及的各個類中。
(34)類必須知道它包含什么,但是不能知道誰包含它。
(35)共享字面范圍(也就是被同一個類所包含)的對象相互之間不應當有使用關系。
(36)繼承只應被用來為特化層次結構建模。
(37)派生類必須知道基類,基類不應該知道關于它們的派生類的任何信息。
(38)基類中的所有數據都應當是私有的,不要使用保護數據。
類的設計者永遠都不應該把類的使用者不需要的東西放在公有接口中。
(39)在理論上,繼承層次體系應當深一點,越深越好。
(40)在實踐中,繼承層次體系的深度不應當超出一個普通人的短期記憶能力。一個廣為接受的深度值是6。
(41)所有的抽象類都應當是基類。
(42)所有的基類都應當是抽象類。
(43)把數據、行為和/或接口的共性盡可能地放到繼承層次體系的高端。
(44)如果兩個或更多個類共享公共數據(但沒有公共行為),那么應當把公共數據放在一個類中,每個共享這個數據的類都包含這個類。
(45)如果兩個或更多個類有共同的數據和行為(就是方法),那么這些類的每一個都應當從一個表示了這些數據和方法的公共基類繼承。
(46)如果兩個或更多個類共享公共接口(指的是消息,而不是方法),那么只有他們需要被多態地使用時,他們才應當從一個公共基類 繼承。
文章來源于領測軟件測試網 http://www.kjueaiud.com/