1. 程式人生 > >(過度)設計其實是一種病

(過度)設計其實是一種病

軟體設計的學問很深,學一點可以開拓思路,學透了可以成為專家,而學得半透不透的時候,感覺就會像一種病,一種“設計病”。

得了“設計病”的程式設計師幹活很慢。你看那些剛畢業的年輕同志,拿到任務後立刻開啟開發工具,又是點又是敲的,一會兒就能看到介面,程式功能一個一個地不斷被實現,速度快的很。得了“設計病”的程式設計師就不能這樣。拿到任務後左思右想,總覺得這樣也行,那樣也不錯,一個小程式他能想出幾百種方法來,光權衡就得半天。寫程式通常也不從介面開始做,悶著頭在鍵盤上狂按了好久,程式還是不能執行,搞得專案經理直冒汗。

“設計病”的程式設計師寫的程式,寫著費勁,看起來勞神。通常別人寫一個函式的,“設計病”人非要寫成好幾個。使用面向物件開發語言的更是如此。“設計病”人寫的程式裡,類特別多。人家用兩三個類就可以實現的功能,“設計病”人要用五六個類,甚至更多。還弄一些個類,一堆虛擬函式,一個成員變數也沒有。稍大一點的程式就有幾十上百的類擠在一起,關係也很複雜,一般人還真看不懂。

和“設計病”人討論問題也不容易。通常大家都在談這是個什麼功能,某個功能怎麼樣才能實現,而“設計病”人常常不討論這個,嘴上總掛著什麼“複用”、“耦合”、“模式”等一類莫名其妙的詞彙。就算“設計病”人在討論功能的時候,聽起來也和程式的實際功能相差很遠。比如當大家在討論使用多執行緒實現的時候,他就討論執行緒管理類的介面;當大家討論傳送資料要緩衝的時候,“設計病”人卻在研究如何實現一個快速的資料佇列。

事實上“設計病”人自己也很痛苦。他們對現有的方案總是不滿意,甚至昨天他自己寫的方案,今天再看時也覺得不滿。自己費盡心機設計出來的可複用的類,卻從來都沒有被複用過。自己好不容易設計出的鬆耦合的模組結構,在增加新功能時,卻不得不在很多層次的類上做修改。

“設計病”也很難治好。“設計病”人總是不由自主地做設計,不願意用直接的方式實現程式,總想把程式一點點剝開、分解。怎麼勸都不會有用。他們相信遲早有一天自己的設計會發揮作用。

“設計病”人寫出過很多爛程式。要麼設計失敗,考慮不周,程式結構有問題,要麼過度設計,簡單的功能,大堆的類,還不如不做設計。

不由自主地去設計,努力去寫出爛程式,不是一種病又是什麼?

如果您覺得也得了“設計病”了,也別太著急,辦法有一個,就是繼續“病”下去,努力做設計。直到有一天,能平衡完美和實用了,這病也就好了。