法拉利和獵槍-蹩腳軟件設計的根源

有一位名叫克拉克的大富豪,名列世界富豪榜Top10,錢多得花不了,很想去非洲玩樂揮霍一番,於是他撥通了一份廣告上的電話:嘿,小子,聽好了,我要去非洲狩獵,要訂購你們公司最頂級的狩獵設備,越快越好,10天后我在非洲接貨…。

10天以後,狩獵設備如期交貨,是一輛最新款的頂級法拉利跑車。特別之處在於車的前蓋上裝備了一把勃朗寧造的頂級獵槍,在車裏配備了一套世界最頂級的獵槍自動裝彈、瞄準和射擊的控制系統,它使得駕駛員在車裏就可以輕鬆操控獵槍進行射擊。克拉克立刻被這種別緻、高檔的設計所征服了,帶着他的私人保鏢,迫不及待地跳上跑車絕塵而去。伴隨着高亢的重金屬搖滾,以300麥的高速在非洲大草原上狂奔,野生動物在身邊紛紛閃過。克拉克通過自動火控系統,快速地瞄準他中意的獵物,輕輕一按發射按鈕,獵物應聲倒地。克拉克由衷的讚歎:哇塞,這設備實在是太酷了,連車身的速度和角度都被自動融合到彈道的計算中了,彈無虛發啊!爽!

酣暢淋漓地狂奔了一小時後,克拉克駕車來到了一座山丘的附近,與此同時,他很幸運地發現了號稱奔跑速度最快的非洲獵豹。於是,他立刻驅車靠近。但是,法拉利巨大的轟鳴聲立刻引起了獵豹的警覺,拔腿就跑,一轉眼就不見了蹤影。克拉克緊追不捨,來到了一篇叢林邊。爲了繼續追趕獵豹,克拉克只好命令保鏢隨同他下車,來到車前方,想要取下獵槍進行徒步狩獵。然而,此時他才發現,這獵槍是焊接在車蓋上的,根本無法取下。“Shit!”,克拉克非常掃興,忍不住罵了一聲。他回頭看了看四個身強力壯的保鏢,計上心來:兄弟們,給我擡着車前進。四個保鏢雖然非常不願意,但是畢竟是收人錢財了,只好硬着頭皮擡起法拉利進入了叢林…

三天以後,克拉克返回了自己的豪華別墅。第一件事就是電話投訴:“你們的狩獵設備太爛了,獵槍居然焊接在車蓋上,完全毀了我的旅程,我要投訴…”。狩獵設備公司的銷售人員非常的委屈:我們的設備多好啊,又能快速移動,又能精準射擊,法拉利和勃朗寧的結合難道不是完美的頂級組合嗎?”。

這個虛構的小故事到此結束,你有沒有覺得它和軟件設計有任何關係?再直接一點提問:你在設計軟件的時候,是否曾經幹過把獵槍焊接在法拉利身上的事情?可以坦誠地告訴你,我有,只不過那是一個變形的袖珍版,我曾經把照相機焊接在自行車上。

把沒有必然關聯的兩個部分有意識或無意識地揉在一起,只是因爲你覺得在某個場合你會同時需要他們。這種蹩腳的耦合,是蹩腳軟件設計的一大主因,甚至在我看來是最大的主因。當我回顧自己做過的軟件設計時,90%的不良設計都是由這種蹩腳的耦合造成的。去除耦合,說起來很簡單,做起來卻真的很難,很多人都是在無意識之中就把獵槍焊接在法拉利身上了,就因爲覺得會同時需要它們,而沒有經過足夠仔細和慎重的推敲。

當獵槍焊接在法拉利身上以後,如果你需要一支可以徒步狩獵的獵槍,你要麼再複製一支一模一樣的,要麼就扛着法拉利去打獵吧。這樣的事情,在蹩腳的軟件設計中,每天都在發生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章