你的軟件爛透了(四)自頂向下

探索與分享軟件工程中的創(chuàng)新

自頂向下

自軟件的開發(fā)進入高級語言時代后屋厘,就有一個對軟件設計的基本原則——“自頂向下”煤辨。在面向過程的時代的自頂向下逐步求精是確保軟件質量的一種手段峦失。邏輯封裝在過程中拔莱,或者說邏輯單元由每個過程去實現卷中,這樣各個邏輯單元建立的聯系就形成一顆“樹”政恍。兩個相關的邏輯單元形成串聯氓涣。然而現實中體現的邏輯很復雜牛哺,兩個邏輯單元的串聯遠遠無法滿足表達的需要,因此有了“Goto"語句劳吠。這是一個毀譽參半的功能引润。它簡化了邏輯,但同時也破壞了邏輯的結構痒玩。而面向對象的誕生解決了邏輯表達的大問題淳附,邏輯單元與邏輯單元之間有了更豐富的表達方式,而在本質上這種方法使邏輯單元之間聯系所表達的關系仍然形成一顆“樹”型蠢古,這種方法也比面向過程更加抽象奴曙。自然需要一些圖例表達這樣的關系,才能幫助人們理解整個結構草讶。軟件的缺陷就可能隱藏在這種抽象的關系中洽糟。

為了減化這種復雜性于是出現了MVC,MVVM,DDD等設計框架及設計模型坤溃。當發(fā)展到DDD(領域驅動設計)時拍霜,可以看到一個比較明顯的層次結構。這一個層次模型比較清晰的表達了軟件的結構薪介,并使領域模型準確反映了業(yè)務語言沉御,避免過早的關心業(yè)務數據之間的關系,因為以自頂向下為設計原則昭灵,那么自然是以業(yè)務邏輯規(guī)則決定業(yè)務數據的關系吠裆。當遇到一個復雜的業(yè)務,直接用領域模型反映業(yè)務語言嗎烂完?我認為這并不是明智的做法试疙。

面對一個復雜的業(yè)務,我們將會面數十個或數百個類抠蚣,類之間的關聯會另人眼花繚亂祝旷。沒有一種良好的管理方式它們其中很小一部分的變化都會使整個團隊叫苦連天。而最簡單有效的管理方式嘶窄,我認為就是分層怀跛。這里借用了“AHP”(Analytic Hierarchy Process)層次分析法。這是一種實用的多方案或多目標的決策方法柄冲,是一種定性與定量相結合的決策分析方法吻谋。任何一個業(yè)務邏輯可以抽象為三個層次:“目標層”,“準則層”现横,“資源層”漓拾。目標層即業(yè)務邏輯所到達到的目的;準則層即業(yè)務邏輯目標受到的內外部約束和采取的措施和方案戒祠;資源層即實現業(yè)務邏輯需要的資源骇两。如果業(yè)務邏輯復雜,還可以增加抽象層次姜盈。再以每個層次建立領域模型低千,形成一個多層次的業(yè)務描述。這樣設計也將帶來一些額外的好處馏颂。由于它引自AHP示血,通過數學模型可以計算出各層次的權重,為資源分配提供決策依據饱亮。

這樣一個層次模型能顯性表達變化的成本矾芙,越是處于底層的變化對模型的影響越大,變更所引發(fā)的成本也就越高也越是需要解耦合的設計近上。此時面向對象和它解耦合的設計才充分的顯示出它的價值以及帶來的便利。

上一章
[下一章]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末拂铡,一起剝皮案震驚了整個濱河市壹无,隨后出現的幾起案子葱绒,更是在濱河造成了極大的恐慌,老刑警劉巖斗锭,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件地淀,死亡現場離奇詭異,居然都是意外死亡岖是,警方通過查閱死者的電腦和手機帮毁,發(fā)現死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豺撑,“玉大人烈疚,你說我怎么就攤上這事〈辖危” “怎么了爷肝?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陆错。 經常有香客問我灯抛,道長,這世上最難降的妖魔是什么音瓷? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任对嚼,我火速辦了婚禮,結果婚禮上绳慎,老公的妹妹穿的比我還像新娘猪半。我一直安慰自己,他們只是感情好偷线,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布磨确。 她就那樣靜靜地躺著,像睡著了一般声邦。 火紅的嫁衣襯著肌膚如雪乏奥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天亥曹,我揣著相機與錄音邓了,去河邊找鬼。 笑死媳瞪,一個胖子當著我的面吹牛骗炉,可吹牛的內容都是我干的。 我是一名探鬼主播蛇受,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼句葵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起乍丈,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤剂碴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轻专,有當地人在樹林里發(fā)現了一具尸體忆矛,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年请垛,在試婚紗的時候發(fā)現自己被綠了催训。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡宗收,死狀恐怖漫拭,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情镜雨,我是刑警寧澤嫂侍,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站荚坞,受9級特大地震影響挑宠,放射性物質發(fā)生泄漏。R本人自食惡果不足惜颓影,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一各淀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诡挂,春花似錦碎浇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至城豁,卻和暖如春苟穆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唱星。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工雳旅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人间聊。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓攒盈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哎榴。 傳聞我的和親對象是個殘疾皇子型豁,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容