設計模式已經隕落了?

jobbole發表於2014-03-11

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

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

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

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

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

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

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

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

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

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

  原文連結: supercoders   翻譯: 伯樂線上 - 唐小娟

相關文章