面向對象設計——啓發規則

    11.2    啓發規則
    人們使用面向對象方法學開發軟件的歷史雖然不長,但也積累了一些經驗
。總結這些經驗得出了幾條啓發規則,它們往往能幫助軟件開發人員提高面向對象
設計的質量。

1.設計結果應該清斷易懂
    使設計結果清晰、易讀,易懂,是提高軟件可維護性和可重用性的重要措施
。顯然,人們不會重用那些他們不理解的設計。保證設計結果清晰易懂的主要因素
如下*:
(1)用詞一致,應該使名字與它所代表的事物一致,而且應該儘量使用人們習慣的
名字,不同類中相似服務的名字應該相同。

(2)使用已有的協議,如果開發同一軟件的其他設計人員已經建立了類的協議,或者
在所使用的類庫中已有相應的協議,則應該使用這些已有的協議

(3)減少消息模式的數目,如果已有標準的消息協議,設計人員應該遵守這些協議。
如果確需自已建立消息協議,則應該儘量減少消息模式的數目,只要可能,就使消
息具有一致的模式,以利於讀者理解。

(4)避免模糊的定義。一個類的用途應該是有限的,而且應該從類名可以較容易地推
想出它的用途。

2.一般-特殊結構的深度應適當

    應該使類等級中包含的層次數適當。一般說來,在一箇中等規模(大約包含
100個類)的系統中,類等級層次數應保持爲7±2。不應該僅僅從方便編碼的角度出
發隨意創建派生類,應該使一般-特殊結構與領域知識或常識保持一致。

3.設計簡單的類

    應該儘量設計小而簡單的類,以便於開發和管理。當類很大的時候,要記住
它的所有服務是非常困難的。經驗表明,如果一個類的定義不超過一頁紙(或兩屏),
則使用這個類是比較容易的。爲使類保持簡單,應該注意以下幾點:

(1)避免包含過多的屬性。屬性過多通常表明這個類過分複雜了,它所完成的功能
可能太多了。

(2)有明確的定義,爲了使類的定義明確,分配給每個類的任務應該簡單,最好能用一
兩個單語句描述它的任務。

(3)儘量簡化對象之間的合作關係、如果需要多個對象協同配合才能做好一件事,
則破壞了類的簡明性和清晰性

(4)不要提供太多服務,一個類提供的服務過多,同樣表明這個類過分複雜。典型地,
一個類提供的公共服務不超過7個。
    在開發大型軟件系統時,遵循上述啓發規則也會帶來另一個問題:設計出大
量較小的類,這同樣會帶來一定複雜性。解決這個問題的辦法,是把系統中的類按邏
輯分組,也就是劃分“主題”。

4.使用簡單的協議
    
    一般說來,消息中的參數不要想過3個。當然,不超過3個的限也不是絕對的
,但是,經驗表明,通過複雜消息相互關聯的對象是緊耦合的,對一個對象的修改往往
導致其他對象的修改。

5.使用簡單的服務

    面向對象設計出來的類中的服務通常都很小,一般只有3~5行源程序語句,
可以用僅含一個動詞和一個賓語的簡單句子描述它的功能。如果一個服務中包含了
過多的程序語句,或者語句嵌套層次太多,或者使用了複雜的CASE語句,則應該仔細
檢查這個服務,設法分解或簡化它,一般說來,應該儘量避免使用複雜的服務。如果
需要在服務中使用CASE語句,通常應該考慮用一般特殊結構代替這個類的可能性

6.把設計変動減至最小

    通常,設計的質量越高,設計結果保持不變的時間也越長。即使出現必須修改設計的情況,也應該使修改的範圍儘可能小,理想的設計變動曲線如圖11.1所示。
    在設計的早期階段,變動較大,隨着時間推移,設計方案日趨成熟,改動也越來越小了,圖1.1中的峯值與出現設計錯誤或發生非預期變動的情況相對應,峯值越高,表明設計質量越差,可重用性也越差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章