unix模塊化

軟件設(shè)計(jì)有兩種模式:一種是設(shè)計(jì)得極為簡(jiǎn)潔清寇,沒(méi)有看得到的缺陷浩村;另一種是設(shè)計(jì)得極為復(fù)雜做葵,有缺陷也看不出來(lái),第一種方式的難度要大得多心墅。

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

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

1. 封裝和最佳模塊大小

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

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

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

2古胆、緊湊性

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

3夭谤、正交性

在純粹的正交設(shè)計(jì)中棺牧,任何操作均無(wú)副作用;每一個(gè)動(dòng)作(無(wú)論是API調(diào)用沮翔、宏調(diào)用還是語(yǔ)言運(yùn)算)只改變一件事陨帆,不會(huì)影響其它曲秉。無(wú)論你控制的是什么系統(tǒng),改變每個(gè)屬性的方法有且只有一個(gè)疲牵。

4承二、STOP原則

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

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

5.模塊式編碼

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哨坪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乍楚,更是在濱河造成了極大的恐慌当编,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徒溪,死亡現(xiàn)場(chǎng)離奇詭異忿偷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)臊泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)牵舱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人缺虐,你說(shuō)我怎么就攤上這事〗阜玻” “怎么了高氮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)顷牌。 經(jīng)常有香客問(wèn)我剪芍,道長(zhǎng),這世上最難降的妖魔是什么窟蓝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任罪裹,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘状共。我一直安慰自己套耕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布峡继。 她就那樣靜靜地躺著冯袍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碾牌。 梳的紋絲不亂的頭發(fā)上康愤,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音舶吗,去河邊找鬼征冷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛誓琼,可吹牛的內(nèi)容都是我干的检激。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼踊赠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呵扛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起筐带,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤今穿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伦籍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蓝晒,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年帖鸦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芝薇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡作儿,死狀恐怖洛二,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攻锰,我是刑警寧澤晾嘶,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站娶吞,受9級(jí)特大地震影響垒迂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妒蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一机断、第九天 我趴在偏房一處隱蔽的房頂上張望楷拳。 院中可真熱鬧,春花似錦吏奸、人聲如沸欢揖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浸颓。三九已至,卻和暖如春旺拉,著一層夾襖步出監(jiān)牢的瞬間产上,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工蛾狗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晋涣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓沉桌,卻偏偏與公主長(zhǎng)得像谢鹊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子留凭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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