閱讀筆記 > 受歡迎程序的設計特點

高質量的設計往往有一些共同的特點。如果你能達到這些對象,那麼可以認爲你的設計也是非常成功的。有些對象是互相矛盾的。但是這是設計的挑戰所在,在相互矛盾的對象之間做出合理的折衷。某些高質量設計的特點同時也是高質量程序的特點——可靠性。其餘的則是設計所獨有的。

以下是設計所獨有的一些特點:

智力上的可管理性。 對於任何系統來說,智力上的可管理性都是其重要目標之一。它對於整個系統的完整性是非常重要的,並且會影響程序員們開發和維護系統的難易程度。

低複雜性。 低複雜性實際上是智力上的可管理性一部分,由於上述同樣的原因,這點也很重要。

維護的方便性。 維護的方便性意味着設計時要爲負責維護的程序員着想。在設計中,要不停地想象維護程序中將會對你的設計提出的問題。應該把維護程序員當作你的聽衆,同時把系統設計成明白易懂的。

最小的聯繫性。 最小的聯繫性指的是按照保持子程序之間的聯繫最少的原則來設計,應該利用強內聚,鬆散耦合和信息隱蔽等作爲指導原則來設計系統,使其內部的聯繫性儘可能少。最小的聯繫性可以極大地減小綜合、測試和維護階段的工作量。

可擴充性。 可擴充性指的是不必影響系統的內部結構,就可以對系統的功能進行強化,你可以改變系統的某一部分而不影響其餘部分,使得最大可能性變動對系統帶來的影響最小。

可重複使用性。 可重複使用性指的是把系統設計成其中許多部分是可以被其它系統借用的。

高扇入。高扇入指的是對於一個給定的子程序來說,應該有儘可能多的子程序調用它。高扇入表明一個系統在低層次上充分利用了功能子程序。

低或中等程度扇出。 低或中等扇出指的是對一個確定的子程序來說,它所調用的子程序應該儘可能地少。高扇出(大約 7 個以上)說明一個子程序控制了許多其它子程序,因此可能是很難理解的。而中等扇出則表明一個子程序只把任務交給了數量較少的其它子程序,因此是比較容易理解的。低扇出(少於 4個)看起來像是一個子程序沒有把足夠的任務交給其餘的子程序去做,但經驗表明並不是這樣。一項研究表明有 42%只調用一個子程序的子程序是沒有錯誤的,有 32%的調用 2~7 個子程序是沒有錯誤的, 而在調用 7 個以上子程序的情況中,只有 12%是沒有錯誤的(Card, Church 和 Agresi,1986)。由此,Card 認爲 0~2個扇出是最優的。

可移植性。 可移植性指的是把系統設計成很容易轉到另外的環境下運行。

簡練性。 簡練性指的是把系統設計得沒有任何多餘部分。Voltaire曾說過,當一本書不能刪掉,而不是不能添補任何內容時,纔可以認爲它已完成了。在軟件中,這也是非常正確的,因爲當你對系統進行改進時,你不得不對冗餘的代碼進行開發、評審、測試和維護等等工作,而且在開發軟件的新版本時,新版本也不得不與這些冗餘的代碼兼容。最有害的觀點是“多加入些又不會有害,怕什麼呢?”

成層設計。 成層設計指的是儘量分解的層次是成層的,這樣你可以在每一個單獨的層次上觀察系統,同時也可以使觀察的層次是連續的。也就是說當你在某一層次上觀察系統時,不會看到在其它層次上看到的東西。你會經常遇到某些子程序和軟件在幾個層次上起作用。這樣會使系統很混亂,應盡力避免。

如果在編寫一個先進系統時,不得不借用許多舊的、設計得不好的代碼,那麼你可以在新系統中建立一個層(layer),與那些舊代碼相聯接。精心設計這個層使它把舊代碼的缺點隱含起來,從而使新層表現了一整套連續的功能。然後,讓程序的其餘部分調用些子程序而不是直接調用舊代碼。成層設計的好處是:(1 )它可以使你避免與拙劣的舊代碼直接打交道;(2)一旦你想廢棄那些舊代碼中的子程序的話,只要修改一下接口層就可以了。

標準化技求。 標準化技術是深受歡迎的。一個系統使用的奇特的、非標準的技術越多,當別人第一次讀它時就會越感到可怕,也越難理解。應該通過採用常用的、標準化的技術使得人們在閱讀它時是一種熟悉的感覺

摘自《代碼大全》
發佈了48 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章