軟件應(yīng)該是一棵樹

一個成熟的軟件是一個復雜的系統(tǒng)繁扎,當我是一個新手的時候,我以為它像一座建筑,按照既定的圖紙開發(fā)出來∈崦担現(xiàn)在我更深的體會是爹梁,它更像一棵樹,是逐漸成長起來的提澎。事實上姚垃,世界上最復雜的軟件,它的復雜度都遠遠不如一棵樹盼忌。

  • 層次結(jié)構(gòu)(分離關(guān)注)

從宏觀意義上來說积糯,一棵樹有花朵、葉子谦纱、樹干看成、樹根等結(jié)構(gòu),而具體到花朵又有花冠跨嘉、花萼川慌、花蕾等結(jié)構(gòu),更微觀上祠乃,每個植物細胞都有細胞壁梦重、細胞核、細胞液亮瓷、葉綠體等結(jié)構(gòu)琴拧。任何復雜的系統(tǒng)都有可分解的層次結(jié)構(gòu),我們要考察這個系統(tǒng)的某個特性的時候嘱支,要在合適的層次上進行研究——這也就是“分離關(guān)注”蚓胸。例如我們要解釋植物是如何合成植物蛋白的,可以這樣解釋:

樹根從土壤中吸取水分和微量元素斗塘,經(jīng)過樹干輸送到樹冠的葉子赢织,葉子吸收二氧化碳,通過光合作用合成植物蛋白馍盟。

接著如果要考察葉子如何進行光合作用于置,就要從葉子的植物細胞的葉綠體,細胞液贞岭,細胞核等不同組成部分的功能和相互之間的交互來解釋八毯。

同樣的從宏觀上考察軟件作為一個系統(tǒng),完成某個功能的時候瞄桨,可以從不同層次(樹根话速、樹干、葉子)之間不同形式的數(shù)據(jù)(水芯侥、微量元素泊交、二氧化碳)是如何傳遞轉(zhuǎn)化的來解釋乳讥。之后就要深入到了解某一個層次的組件是如何完成交互來完成某一子功能。

  • 自律性個體

僅僅拿一個植物細胞來考察廓俭,就會發(fā)現(xiàn)你很難不把它認為是一個自律性的生命個體云石。作為細胞群中的一員,它和其他細胞不斷的交換物質(zhì)研乒,同時它有自己的化學趨向(趨水汹忠、趨光)。根部向水生長雹熬,樹冠朝向陽處生長宽菜,這些宏觀的行為,并不是給每一個細胞發(fā)送指令竿报,而是它們自發(fā)性行為的整體表現(xiàn)铅乡。而所謂的自律性,首先要定義個體對哪些刺激敏感而會有哪些產(chǎn)物烈菌,例如葉綠體在光線刺激下會通過光合作用合成相應(yīng)的化學物質(zhì)隆判,而這種化學物質(zhì)又作為植物細胞的刺激輸入而有新的化學物質(zhì)產(chǎn)生。這些簡單的規(guī)則定義之后僧界,就會在整體上表現(xiàn)出統(tǒng)一的規(guī)律。這也是軟件開發(fā)從面向過程到面向?qū)ο筠D(zhuǎn)變的本質(zhì)臭挽,也就是消息驅(qū)動的設(shè)計模式捂襟。

  • 共同模式

在植物結(jié)構(gòu)層次的各個部分之中,有著大量相同的特點欢峰。樹根或者樹葉葬荷,基本的組成單元是細胞,它們的結(jié)構(gòu)是類似的纽帖,雖然存在是否含有葉綠體這個顯著區(qū)別宠漩,而且其細胞液的化學成分不同。這是因為細胞的基礎(chǔ)結(jié)構(gòu)提供了一系列基礎(chǔ)功能懊直,例如細胞壁提供了支撐和保護功能扒吁,細胞液提供了物質(zhì)交互的場所,諸如此類室囊,大自然遵守著軟件開發(fā)的“DRY”原則雕崩,用組合(加一個葉綠體提供光合作用)或者繼承(細胞壁有不透水的也有半透膜)的方式,做了一個復雜系統(tǒng)的經(jīng)濟表述融撞。

理論物理學家認為盼铁,宇宙只存在四種基本的作用力:重力、電磁力尝偎、強相互作用力和弱相互作用力饶火。宇宙通過這四種基本力又組成了恒星鹏控、行星、衛(wèi)星等在宏觀層次上大量復用的共同模式肤寝。在面向?qū)ο蟮能浖到y(tǒng)中当辐,對象與對象只存在三種基本的關(guān)系:組合、繼承和相關(guān)醒陆。通過這三種基本關(guān)系瀑构,又可以識別出多種設(shè)計模式。

  • 穩(wěn)定的中間形式

復雜系統(tǒng)毫無例外都是從能工作的簡單系統(tǒng)演變而來的......從頭設(shè)計的復雜系統(tǒng)根本不能工作刨摩,也不能通過打補丁的方式使其工作寺晌,必須從頭開始,從能工作的簡單系統(tǒng)開始澡刹。

一顆種子成長為一棵樹呻征,要經(jīng)過幾個穩(wěn)定的中間形式。種子的胚胎已經(jīng)簡單卻分明的層次罢浇,其中有一些會發(fā)育成熟為其他的姿態(tài)陆赋,有一些會完成歷史使命而消失,還有一些模塊嚷闭,例如花朵攒岛,是舊系統(tǒng)上全新產(chǎn)生的,但也是依賴于現(xiàn)有的穩(wěn)定的層次胞锰。生長環(huán)境會影響樹木發(fā)育的最終形態(tài)灾锯,這就像一個軟件系統(tǒng)開始成熟起來,而開發(fā)人員對其真實行為了解的越來越多嗅榕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顺饮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凌那,更是在濱河造成了極大的恐慌兼雄,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帽蝶,死亡現(xiàn)場離奇詭異赦肋,居然都是意外死亡,警方通過查閱死者的電腦和手機嘲碱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門金砍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麦锯,你說我怎么就攤上這事恕稠。” “怎么了扶欣?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵鹅巍,是天一觀的道長千扶。 經(jīng)常有香客問我,道長骆捧,這世上最難降的妖魔是什么澎羞? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮敛苇,結(jié)果婚禮上妆绞,老公的妹妹穿的比我還像新娘。我一直安慰自己枫攀,他們只是感情好括饶,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著来涨,像睡著了一般图焰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹦掐,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天技羔,我揣著相機與錄音,去河邊找鬼卧抗。 笑死藤滥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的社裆。 我是一名探鬼主播超陆,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浦马!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起张漂,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晶默,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后航攒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磺陡,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年漠畜,在試婚紗的時候發(fā)現(xiàn)自己被綠了币他。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡憔狞,死狀恐怖蝴悉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘾敢,我是刑警寧澤拍冠,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布尿这,位于F島的核電站,受9級特大地震影響庆杜,放射性物質(zhì)發(fā)生泄漏射众。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一晃财、第九天 我趴在偏房一處隱蔽的房頂上張望叨橱。 院中可真熱鬧,春花似錦断盛、人聲如沸罗洗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栖博。三九已至,卻和暖如春厢洞,著一層夾襖步出監(jiān)牢的瞬間仇让,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工躺翻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丧叽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓公你,卻偏偏與公主長得像踊淳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陕靠,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

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