設計模式已經隕落了?

jopen 10年前發布 | 8K 次閱讀 設計模式

設計模式已經隕落了?

你現在是坐在一個程序員旁邊嗎?如果是的話,那么在你讀下面的段落之前,有一個簡單的實驗。讓他們到一邊去,問問他們兩個問題并記錄下答案。首先問他們“什么是設計模式?”然后再問“說出你能回憶的設計模式的名字。”確保你是在一對一的情況下問的,否則在一個房間的其他程序員會插話。如果你是個程序員,在閱讀下面的段落之前先寫下你的答案吧。

設計模式是用來解決軟件開發中重復出現的問題,久經考驗的方法。當程序員遇到反復出現的問題時,他們通過應用合適的設計模式來解決問題。設計模式是 由最聰明的電腦科學家設計出來的,歷經了時間的考驗,它們被認為是好的方法。使用設計模式,程序員不需要自己想方法去解決所有的編程難題,他們可以使用設 計模式。設計模式節約開發時間,能開發出更靈活,可靠和健壯的軟件。設計模式重用了概念的想法,解決方法的設計理念,考慮了他人的使用。它是非常棒的想 法,讓許多事情更合理了。

但事實是:設計模式已經(幾乎)隕落了。

設計模式應用的成功的先決條件是程序員在遇到重復出現的問題時能夠意識到它們的存在。但如果程序員不能意識到問題的存在,他們將不會知道已經有人解 決過類似的問題了,也不會知道還有設計模式的存在。他們不是應用設計模式來解決這些普遍存在的問題,而是閉門造車,用自己的方法來解決問題。他們花了更多 的時間卻寫出可靠性差的代碼。

設計模式的隕落是因為大部分程序員不足夠了解它們,要解決問題時不能意識那些重復出現的問題的存在。如果他們不能意識到問題,他們就不能用設計模式來解決問題。

在面試中我要求過幾千個程序員解釋設計模式背后的概念,讓他們寫下每個他們能夠回憶起的設計模式的名字。但相當多的程序員根本就不知道什么是設計模 式,或者他們的相關知識太薄弱,以致于就算碰到問題時,他們的知識也不夠處理這些問題。很少的程序員可以說出他們對設計模式的理解。非常少的人知道多于四 五種。更少的人可以描述出設計模式能夠解決的問題。這意味著大多數程序員在日常工作中遇到一些普遍的問題時,他們會用自己的方法去解決,而不是采用很普遍 的解決方法(設計模式)。

不了解設計模式的程序員們當讀到用設計模式開發的代碼時會感到迷惑。他們不能夠理解其他程序員為什么要用這種方法來解決問題。他們面對這樣一些非常普遍的問題時或者遇見設計模式的代碼時,顯得笨手笨腳。

設計模式也是一種通用語——一種程序員皆知的語言,可以用術語來闡述復雜的問題,便于讓其他人明白。但設計模式已經隕落了;你不能用一種你不懂的語言來交流,大部分程序員都不能作為一種概念來使用它們。設計模式是一種很少人會說的通用語。

但設計模式還沒有完全衰退,許多聰明的程序員仍然知道它們,使用它們。這些人是個例外。正是他們努力推廣的結果,才能讓MVC這個設計模式讓所有程序員都熟知,就算是對設計模式知之甚少的人都熟知。

設計模式已經衰退了是因為大部分程序員沒有意識到它在計算機科學中的重要性。許多雇主會考察應聘者對設計模式知識的理解。如果你是一個專業的程序 員,你應該對設計模式有深入的理解。你應該記住設計模式能夠處理的問題,這樣你碰到它們時,你能快速識別出它們。沒有理由找捷徑,也不能對它只一知半解。 去成為一個設計模式方面的專家吧——努力學習,成為真正的專家。我們需要更多的程序員成為設計模式方面的專家。如果有了足夠的專家,可能有一天我們可以說 設計模式是一個成功。

原文鏈接: supercoders   翻譯: 伯樂在線 - 唐小娟
譯文鏈接: http://blog.jobbole.com/21578/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!