新聞中心

你現(xiàn)在是坐在一個程序員旁邊嗎?如果是的話,那么在你讀下面的段落之前,有一個簡單的實驗。讓他們到一邊去,問問他們兩個問題并記錄下答案。首先問他們“什么是設(shè)計模式?”然后再問“說出你能回憶的設(shè)計模式的名字。”確保你是在一對一的情況下問的,否則在一個房間的其他程序員會插話。如果你是個程序員,在閱讀下面的段落之前先寫下你的答案吧。
設(shè)計模式是用來解決軟件開發(fā)中重復(fù)出現(xiàn)的問題,久經(jīng)考驗的方法。當程序員遇到反復(fù)出現(xiàn)的問題時,他們通過應(yīng)用合適的設(shè)計模式來解決問題。設(shè)計模式是由最聰明的電腦科學(xué)家設(shè)計出來的,歷經(jīng)了時間的考驗,它們被認為是好的方法。使用設(shè)計模式,程序員不需要自己想方法去解決所有的編程難題,他們可以使用設(shè)計模式。設(shè)計模式節(jié)約開發(fā)時間,能開發(fā)出更靈活,可靠和健壯的軟件。設(shè)計模式重用了概念的想法,解決方法的設(shè)計理念,考慮了他人的使用。它是非常棒的想法,讓許多事情更合理了。
但事實是:設(shè)計模式已經(jīng)(幾乎)隕落了。
設(shè)計模式應(yīng)用的成功的先決條件是程序員在遇到重復(fù)出現(xiàn)的問題時能夠意識到它們的存在。但如果程序員不能意識到問題的存在,他們將不會知道已經(jīng)有人解決過類似的問題了,也不會知道還有設(shè)計模式的存在。他們不是應(yīng)用設(shè)計模式來解決這些普遍存在的問題,而是閉門造車,用自己的方法來解決問題。他們花了更多的時間卻寫出可靠性差的代碼。
設(shè)計模式的隕落是因為大部分程序員不足夠了解它們,要解決問題時不能意識那些重復(fù)出現(xiàn)的問題的存在。如果他們不能意識到問題,他們就不能用設(shè)計模式來解決問題。
在面試中我要求過幾千個程序員解釋設(shè)計模式背后的概念,讓他們寫下每個他們能夠回憶起的設(shè)計模式的名字。但相當多的程序員根本就不知道什么是設(shè)計模式,或者他們的相關(guān)知識太薄弱,以致于就算碰到問題時,他們的知識也不夠處理這些問題。很少的程序員可以說出他們對設(shè)計模式的理解。非常少的人知道多于四五種。更少的人可以描述出設(shè)計模式能夠解決的問題。這意味著大多數(shù)程序員在日常工作中遇到一些普遍的問題時,他們會用自己的方法去解決,而不是采用很普遍的解決方法(設(shè)計模式)。
不了解設(shè)計模式的程序員們當讀到用設(shè)計模式開發(fā)的代碼時會感到迷惑。他們不能夠理解其他程序員為什么要用這種方法來解決問題。他們面對這樣一些非常普遍的問題時或者遇見設(shè)計模式的代碼時,顯得笨手笨腳。
設(shè)計模式也是一種通用語——一種程序員皆知的語言,可以用術(shù)語來闡述復(fù)雜的問題,便于讓其他人明白。但設(shè)計模式已經(jīng)隕落了;你不能用一種你不懂的語言來交流,大部分程序員都不能作為一種概念來使用它們。設(shè)計模式是一種很少人會說的通用語。
但設(shè)計模式還沒有完全衰退,許多聰明的程序員仍然知道它們,使用它們。這些人是個例外。正是他們努力推廣的結(jié)果,才能讓MVC這個設(shè)計模式讓所有程序員都熟知,就算是對設(shè)計模式知之甚少的人都熟知。
設(shè)計模式已經(jīng)衰退了是因為大部分程序員沒有意識到它在計算機科學(xué)中的重要性。許多雇主會考察應(yīng)聘者對設(shè)計模式知識的理解。如果你是一個專業(yè)的程序員,你應(yīng)該對設(shè)計模式有深入的理解。你應(yīng)該記住設(shè)計模式能夠處理的問題,這樣你碰到它們時,你能快速識別出它們。沒有理由找捷徑,也不能對它只一知半解。去成為一個設(shè)計模式方面的專家吧——努力學(xué)習(xí),成為真正的專家。我們需要更多的程序員成為設(shè)計模式方面的專家。如果有了足夠的專家,可能有一天我們可以說設(shè)計模式是一個成功。
文章名稱:設(shè)計模式已經(jīng)隕落了?
文章出自:http://www.5511xx.com/article/cohjsjs.html


咨詢
建站咨詢
