unix模塊化

軟件設(shè)計有兩種模式:一種是設(shè)計得極為簡潔,沒有看得到的缺陷;另一種是設(shè)計得極為復(fù)雜,有缺陷也看不出來,第一種方式的難度要大得多。

模塊化原則就是要編寫復(fù)雜軟件又不至于一敗涂地的唯一方法,用定義清晰的接口把若干簡單模塊組合起來,多數(shù)問題只會出現(xiàn)在局部,還有希望對局部進行改進或優(yōu)化,而不至于牽動全身。

相對于其他程序員,Unix程序骨子里的傳統(tǒng)是:更加篤信重視模塊化、更注重正交性和緊湊型等問題。

1. 封裝和最佳模塊大小

模塊化代碼的首要特質(zhì)是封裝,封裝良好的模塊不會過多向外紕漏自身細節(jié),不會直接調(diào)用其它模塊的實現(xiàn)碼,也不會胡亂共享全局數(shù)據(jù)。模塊之間通過應(yīng)用程序編程接口(API)----一組嚴密、定義良好的程序調(diào)用和數(shù)據(jù)結(jié)構(gòu)來通信

有一種良好的方式來驗證API是否設(shè)計良好:如果試著用純?nèi)祟愓Z言描述設(shè)計(不允許摘錄任何源代碼),是否能把事情說清楚。

模塊分解得越徹底,每一塊越小,API定義也就越重要。全局復(fù)雜度和受bug影響的程序也會相應(yīng)降低。軟件系統(tǒng)應(yīng)設(shè)計成由層次分明的嵌套模塊組成,而且每個層面上的模塊粒度應(yīng)降至最低。

2、緊湊性

設(shè)計是否能裝進人腦中,測試軟件緊湊型一個很實用的好方法是:有經(jīng)驗的用戶通常需要操作手冊嗎?如果不需要,那么這個設(shè)計(或者至少這個設(shè)計的涵蓋正常用途的子集)就是緊湊的。

3、正交性

在純粹的正交設(shè)計中,任何操作均無副作用;每一個動作(無論是API調(diào)用、宏調(diào)用還是語言運算)只改變一件事,不會影響其它。無論你控制的是什么系統(tǒng),改變每個屬性的方法有且只有一個。

4、STOP原則

任何一個知識的再系統(tǒng)內(nèi)部都應(yīng)當(dāng)有一個唯一、明確、權(quán)威的表述。

重復(fù)會導(dǎo)致前后矛盾、產(chǎn)生隱微問題的代碼,原因是當(dāng)你修改重復(fù)點,往往只改一部分而非全部。

5.模塊式編碼

(1)有多少全局變量?全局變量很容易使模塊輕率、混亂相互泄露信息

(2)模塊內(nèi)函數(shù)是不是太大了,如果不能用一句話來簡單描述一個函數(shù)與其調(diào)用程序之間的約定,這個函數(shù)可能太大了
如果局部變量太多,傾向于拆分子程序。或者代碼行是否存在太多縮進

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容