設計樣式已成明日黃花?

在 OO 社群中,由人稱 GoF 所著的《design Patterns: Elements of Reusable Object-Oriented Software中文版為由葉秉哲譯(2001),《物件導向設計模式》,美商普林帝斯霍爾國際出版。被認為是物件導向軟體設計的重要典範,但最近在 InfoQ中文站,有一篇文章的主題是 〈InfoQ: “四人帮”的设计模式经得起时间的考验么?〉,提到這本書最近被人質疑已經與時代的發展脫節,書中解決問題的方式已經可以由新的語言來做更好的處理,用書中的設計樣式有關 design pattern 一詞,中文有兩種翻譯方式,設計模式與設計樣式,同人習慣用「設計樣式」來稱呼之。來解決設計問題還會增加不必要的複雜度。

這篇文章提到對設計樣式的反面意見主要包括了設計樣式是一種複雜性的表現形式、對設計樣式的樣板式代碼(boilerplate code)的需要,代表在設計思路上的問題,也就是開發者所使用的語言基礎結構出現問題的信號、以及設計樣式阻礙了《A Pattern Language – Towns, Buildings, Construction》這本建築架構思想的傳播,本書是被公認是激發了資訊科學領域內的設計樣式運動。

當然,文中也引述了對設計樣式持正面的看法,有人認為設計樣式應做為優秀設計和原則的範例,開發者可以加以應用,而不應該把設計樣式當成教條。不過,也有人也指出,認為設計樣式阻礙了架構語言思想的看法並不是使用設計樣式不對,只是設計樣式代表了語言的不足。最後,這篇文章總結認為,大部分的人都認為設計樣式是很有用的軟體設計工具,大家意見所分歧的焦點是在於 GoF 的書今天是否仍有價值而已。

GoF 的書,到底今天還有價值嗎?同人認為這是因人而異的,看待於你對軟體設計抱持的信念而定。我並不認為設計樣式的使用代表了程式語言的不足,我的原因是,完美的設計並不在於工具本身,而在於在觀念上與概念上抓住了問題的核心。我認為程式語言只是一種工具,而設計樣式的概念是可以超越程式語言的工具層面的。程式語言能夠提供更強大的功能,是因為有了設計樣式的概念與原則的啟發,才會產生出程式語言的新技術,重點是我們是否捉住好的設計概念與原則,而 GoF 的書就是可以讓我們體會良好設計概念與原則的一本書。

最後,提一下同人的一個有趣的觀察。在這篇文章的讀者回應中,有人提到:"個人感覺,除了少數幾個樣式給人一點啟發外,其它樣式都無用",給了對這問題他所認為的答案,但隨後同人看到了另一位讀者提出了一個很棒的反思:"你覺得給你的啟發是什麼?沒用的樣式又是什麼?為什麼沒用?",真是令人稱許。「問關鍵的問題」,對思考與學習而言,真的是非常重要呀。

Powered by ScribeFire.

Please follow and like us:
分類: 分析設計建模, 編程技巧, 設計原則, 軟體開發, 閱讀。這篇內容的永久連結

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *