數(shù)據(jù)拆分和基礎(chǔ)行為

? ? 全無設(shè)計的代碼會將數(shù)據(jù)一股腦的扔到一個結(jié)構(gòu)或類中谣旁,最終導(dǎo)致上帝類床佳,超長的函數(shù)和超長的文件的出現(xiàn)。這樣的實現(xiàn)是難以擴展榄审,難以應(yīng)對變化的砌们。如果你的系統(tǒng)并不需要擴展,那怎么寫都行搁进。同時不需要擴展的系統(tǒng)一般意味著它基本沒有價值浪感。

分工帶來能力提升

? ? 分解系統(tǒng),使之有明確的分工和結(jié)構(gòu)饼问,看起來使系統(tǒng)變得復(fù)雜影兽,但這種復(fù)雜性是系統(tǒng)功能增強的必要的代價。人類社會和軟件架構(gòu)一樣莱革,復(fù)雜的社會結(jié)構(gòu)(政治經(jīng)濟法律)和愈加細化分工帶來生產(chǎn)力的大發(fā)展峻堰;拆分明晰/組合靈活/層次清楚的軟件結(jié)構(gòu)也能帶來軟件能力的大幅提升讹开,這種能力就是軟件更容易響應(yīng)變化(或者說降低變動成本)。

? ? 另一個角度看捐名,如果一個系統(tǒng)完成的功能足夠復(fù)雜旦万,那它的本質(zhì)復(fù)雜度就很高。這種本質(zhì)復(fù)雜度要通過某種明確的結(jié)構(gòu)展現(xiàn)出來镶蹋,才有可能被有效管理成艘。就好像人群,了解每個人的能力特長性格愛好等等信息贺归,給每個人建檔才能做到精細的組織管理淆两。當(dāng)然,你如果只是要這群人去挖白波運河(好比斯大林同志當(dāng)年干的)牧氮,那給每個人一個編號就夠了琼腔。

拆分的依據(jù)

? ? 系統(tǒng)拆分的拆分,首先應(yīng)該選擇一個明確的踱葛,預(yù)先定義的骨架結(jié)構(gòu)。預(yù)先定義是指骨架設(shè)計的原則應(yīng)該是討論明確成文的光坝,且骨架結(jié)構(gòu)不同維度上元素列表應(yīng)該在架構(gòu)層面被定義出來尸诽。基于這個結(jié)構(gòu)盯另,我們才能對系統(tǒng)中的數(shù)據(jù)和行為做一致性的拆分性含。一致性指 data/behavior之間的一致性,以及開發(fā)者之間理解的一致性鸳惯。

? ? 假設(shè)已經(jīng)設(shè)定系統(tǒng)有 <module>和<feature>兩個維度作為骨架結(jié)構(gòu)商蕴,并且已經(jīng)給出了<M>和<M>的list,那么data拆分的最大粒度就應(yīng)該是一個<m芝发,f>的交點绪商。

結(jié)構(gòu)

WHY FEATURE

? ? Feature是一個用戶視角的概念,用戶可以單獨使用或者購買某個feature辅鲸。系統(tǒng)開發(fā)早期格郁,我們往往希望按feature來拆分module,但最終一定會出現(xiàn)某些或者很多feature會波及多個module独悴。Feature之間沖突了例书。一個現(xiàn)實是,系統(tǒng)經(jīng)常被使用的feature可能只占整個feature集合的一小部分刻炒,二八原則在這里仍然成立决采。想想你怎么用微信或者vscode?feature集合一天天長大坟奥,帶來的問題很多树瞭,缺乏設(shè)計的代碼中拇厢,出現(xiàn)了大量重復(fù)和復(fù)雜的判斷條件,內(nèi)存開銷急劇增加移迫,系統(tǒng)性能逐漸惡化旺嬉。性能惡化對于pc和手機app可能還不是個致命問題,你不太關(guān)心今天的游戲和軟件能不能跑在五年前的機器上厨埋,但有些場景可能會是致命的問題邪媳,比如電信設(shè)備,比如機載車載系統(tǒng)荡陷。這些硬件的生命周期可能會在10年以上雨效。

數(shù)據(jù)和基礎(chǔ)行為的一致性

? ? feature可以被關(guān)掉,意味著它對應(yīng)的數(shù)據(jù)和行為都可以被有條件的忽略废赞。忽略的前提是徽龟,需要將它們拆分出來,并提供合適的訪問形式唉地。接口訪問是基礎(chǔ)据悔,不要暴露實現(xiàn)。更好的是封裝行為耘沼,數(shù)據(jù)通過行為展示其功用极颓。?

? ? 拆分后的data應(yīng)該只為一個<m,f>點服務(wù)群嗤,這是data使用的條件菠隆,feature關(guān)閉的時候依賴它的data就不應(yīng)該被訪問。Module存在公用數(shù)據(jù)狂秘,也存在大量有條件的數(shù)據(jù)骇径。一個基礎(chǔ)行為(bbhv)訪問若干data,這個bbhv可用的條件就是它涉及的所有data使用條件的并集者春。好的bbhv的拆分破衔,它的使用條件應(yīng)該足夠簡單,也盡量只為一個<m碧查,f>點服務(wù)运敢。一個bhv在不同feature中有不同的實現(xiàn),這時就需要借助abstract behavior機制了忠售。

總結(jié)

? ? 總結(jié)一下传惠,要管理復(fù)雜度提升擴展性就應(yīng)該對系統(tǒng)進行拆分,拆分之前要先給出骨架結(jié)構(gòu)稻扬。<M,F>是一種可行的結(jié)構(gòu)(完整的結(jié)構(gòu)模型另文描述)卦方。依據(jù)此結(jié)構(gòu)拆分的data和behavior使用條件應(yīng)滿足一致性。

? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泰佳,一起剝皮案震驚了整個濱河市盼砍,隨后出現(xiàn)的幾起案子尘吗,更是在濱河造成了極大的恐慌,老刑警劉巖浇坐,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬捶,死亡現(xiàn)場離奇詭異,居然都是意外死亡近刘,警方通過查閱死者的電腦和手機擒贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來觉渴,“玉大人介劫,你說我怎么就攤上這事“噶埽” “怎么了座韵?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長踢京。 經(jīng)常有香客問我誉碴,道長,這世上最難降的妖魔是什么瓣距? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任翔烁,我火速辦了婚禮,結(jié)果婚禮上旨涝,老公的妹妹穿的比我還像新娘。我一直安慰自己侣背,他們只是感情好白华,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贩耐,像睡著了一般弧腥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潮太,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天管搪,我揣著相機與錄音,去河邊找鬼铡买。 笑死更鲁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奇钞。 我是一名探鬼主播澡为,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼景埃!你這毒婦竟也來了媒至?” 一聲冷哼從身側(cè)響起顶别,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拒啰,沒想到半個月后驯绎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡谋旦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年剩失,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛤织。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡赴叹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出指蚜,到底是詐尸還是另有隱情乞巧,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布摊鸡,位于F島的核電站绽媒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏免猾。R本人自食惡果不足惜是辕,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猎提。 院中可真熱鬧获三,春花似錦、人聲如沸锨苏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伞租。三九已至贞谓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葵诈,已是汗流浹背裸弦。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留作喘,地道東北人理疙。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像徊都,于是被迫代替她去往敵國和親沪斟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355