「因為沒有時間」 — 聊 Over Design 的原動力

--

前兩天,與同事聊到停車場的收費規則,還蠻適合拿來做 TDD 的練習題的,有同事就與我們分享了他以前的工作中做過繳費機的事情。

聊到 Over Design 的話題後,同事自謙地說,他當年不太懂 Design,所以應該不會 Over Design:

對話當然是開玩笑的,但這讓我想到一個問題:「到底什麼樣的人,才比較容易 Over Design?」

想了一會兒,我有一個想法:

越是不懂 Design 的人,才越會 Over Design。

「不懂 Design 怎麼 Over Design 呢?」

我認為,原因有三

原因一:招式太少

軟體的 Design,各有各的門派,每設計方法都有其合適的場景。我們就拿 GOF 的 Design Pattern 來說吧。如果我們只懂其中幾種,或是學得不好,就有可能不小心拿了不對的模式來套到不合的場景上。同時,學得不好的人,也較容易拿 Design Pattern 來套在還不需要 Pattern 的地方。場景不合,自然就得多點 workaround,自然也就容易 Over Design 了。

原因二:不會重構

很多人心中的重構,其實是重寫。我指的重構,是在發現增加彈性的需求時,在測試的保護下,小步小步地重構成更有彈性的樣子。為什麼要小步小步?因為步伐一大,萬一壞了,修起來也慢。而沒有能力這麼做的人,沒有辦法安全重構,重寫又太花時間,那怎麼辦?沒辦法,也就只好一開始在需求還很小的時候就極盡一切可能的「設計,aka 加上各種未來可能需要的彈性」了。

原因三:不做測試

這就不用多說了,你都不做測試,那還怎麼重構?只好「勉為其難」地 Over Design 囉!

設計的定義有很多。按建築師 Christopher Alexander 的說法,就是「決定要做什麼事、 不做什麼事」。

小步快跑的同時,冷靜看看 Context,決定最適合當下的 Solution,並用測試來保護未來發現重構需求的你自己。自然也就能遠離 Over Design 了。

Reference

  1. https://www.youtube.com/watch?v=riqfkR_Hr5c

More about Me

--

--