模式這個概念被廣泛使用。一位仁兄的文章中說,國外已經把模式這個概念推向日常生活中的許多領域。具體情況怎么樣,我沒有機會去考證,但是從西方人崇尚務實的精神推測,我想出現這種勢頭很合理。
我理解,模式是一種歸納整理已有經驗的方式。比如設計模式,就系統整理了一些通用幽雅的設計經驗。
作為程序員,”掌握某種技術”和”能合理地使用該技術解決實際問題”并不是一回事。前者偏向理論,后者側重實踐。前者得到人們的一致重視,而后者一直被忽略。我參與的項目中,經常出現這種情況,新加入項目組的程序員得不到這方面的培訓,需要自己花費很大的精力來尋找使用特定技術實現特定應用的方式。這樣降低了開發效率,使程序代碼晦澀難懂,可讀性差,而且代碼隱藏BUG的幾率大,影響了系統的穩定性和質量。而項目中經驗豐富的程序員和編程高手們,掌握了大量的經驗,但是這些經驗都是個人技巧,很少拿出來交流。這種狀況使高手們的編程方式各不相同,所以他們編寫的代碼可讀性也不高。而且由于缺少系統的交流和整理,高手們的編程模式也難免存在一些不盡合理的地方,甚至可能潛伏了一些影響系統穩定性的錯誤步驟。我覺得有必要把這個問題提出來和大家討論,論題就叫編程模式,希望能引起大家的關注。
把編程模式定義為:合理地使用特定技術解決實際問題的經驗。編程模式這個概念應該被明確地提出來,在程序員間系統地交流、討論、整理。每個項目組在編碼之前,都可以歸納出一組針對自己開發環境的編程模式,要求程序員參考這些模式進行編碼,質量檢查人員以這些模式為標準進行質量檢查。當然編程模式需要不斷地補充和完善,這個不斷改進的過程需要項目組所有人員的共同智慧。關注這個問題,我們的軟件代碼的質量和可讀性將大大提高。我們就可以在軟件開發水平上邁出踏踏實實的一步。
現在常被我們掛在嘴邊的一個話題就是“印度軟件業”,有人說它好,有人罵他爛,不過印度軟件既然被國際社會承認,我想它在質量上應該還過得去。靜下心來比較一下,印度和我們的主要區別之一在于軟件業的基礎——程序員。讓一群印度程序員用同一種編程語言解決同一個問題,會發現他們的程序幾乎一模一樣,變量命名、程序結構、處理思路等就象是抄襲下來的,可以說他們在使用相同的編程模式。站在軟件工程的角度看,所有的程序員都以相同的編程模式作為模板編碼,是保證代碼質量的一條途徑,畢竟所有的軟件系統都是建立再代碼之上的,基礎不牢,上層建筑再花哨也沒有用。軟件工程是一個側重應用和實踐的領域,國外的工程方法更多地來自實踐經驗,所以可操作性很強。但是傳到國內以后就變味了,許多人更愿意把它抽象成純理論去研究,最后出來的理論,只能看,不好使。
這或許還涉及到一個心態的問題,業內的氣氛比較浮,有點急功近利。關注軟件開發的基礎問題,相信可以提高個人和整體的水平。
原文轉自:http://www.anti-gravitydesign.com