我們的代碼怎么了???。。?!
入行也幾年了,回首這幾年的經(jīng)歷。發(fā)現(xiàn)沒有一個(gè)項(xiàng)目能夠讓人滿意,不是Bug滿天飛就是延期。到底為什么呢?客戶太刁蠻?管理問題?技術(shù)問題?還是? 拋開其他因素,聊聊我們開發(fā)人員的問題。
先從目前的項(xiàng)目談起,現(xiàn)在我在項(xiàng)目是在以往代碼上開發(fā)新的應(yīng)用,好多代碼是01年左右寫的,日后不斷的添加新功能,目前源代碼有200M左右??纯创a,上千行的方法不計(jì)其數(shù),也佩服印度阿三把代碼寫成這樣還能保證業(yè)務(wù)正確,尤其還是銀行相關(guān)的。雖然方法很長,不過Log 確實(shí)很詳細(xì),基本可以通過Log 定位那里有問題。而對于目前開發(fā),難道還有繼續(xù)寫成千上萬行的方法嗎?
目前JEEWeb應(yīng)用,不論是規(guī)范的EJB+JSF 還是開源的Hiberante Spring struts,都是分層的架構(gòu),應(yīng)該從架構(gòu)上沒有問題,看了看公司另外項(xiàng)目的代碼,雖然已經(jīng)上09年了,也應(yīng)用了JSF Spring hiberante 等很完善架構(gòu),為什么還是不能讓客戶,發(fā)人員滿意呢?追根究底,軟件其實(shí)就是一行一行代碼實(shí)現(xiàn)的,所以本質(zhì)還是代碼出問題了!!
現(xiàn)在有前人總結(jié)的設(shè)計(jì)模式,OO設(shè)計(jì)思想,以及優(yōu)秀的UML工具,很好的領(lǐng)悟這些東西,應(yīng)該可以保證我們的設(shè)計(jì)沒有問題,而Spring Hiberante 等優(yōu)秀的工具,在軟件架構(gòu)上也應(yīng)該沒有問題。所以問題還是我們的Code。打開我們的Code,誰能拍著胸口說我們的代碼沒有任何沒有拷貝張貼?誰能保證說我們的代碼具有很好的可維護(hù)性呢?往往會(huì)有很多理由,比如工期太緊,沒時(shí)間重構(gòu)或者都是遺留代碼沒有辦法重構(gòu)。而最好的結(jié)局呢,代碼越來越難維護(hù),Bug多的QA都失去了信心,而我們開發(fā)人員越來越?jīng)]有底氣了,項(xiàng)目也一度延期或被取消。
設(shè)計(jì)能力解決問題能力以及職業(yè)素養(yǎng)是我們開發(fā)人員的核心競爭力,而這些能力就是在不斷優(yōu)化我們的領(lǐng)域模型,以及不斷編寫優(yōu)秀的代碼中慢慢提高的,不是看幾本設(shè)計(jì)方面架構(gòu)的方面的書就Ok的。正如Clear Code作者說比喻的,軟件開發(fā)人員就是匠人,你寫的每行代碼就是你的產(chǎn)出,你的作品。
其實(shí)我們大多數(shù)人其實(shí)都知道這些道理,但其實(shí)都習(xí)慣了,不想改進(jìn)而已。這就是問題所在??! 沒辦法,那就從流程上控制,敏捷開發(fā)想從流程上來避免這些問題,首先測試優(yōu)先,使我們不得不前期設(shè)計(jì)可以測試的領(lǐng)域模型,結(jié)對編程讓另外一個(gè)人檢查你的代碼,讓你不能隨意聊天看網(wǎng)頁,提高效率,培養(yǎng)職業(yè)修養(yǎng)。而實(shí)際應(yīng)用呢,好多公司老板感覺兩個(gè)人用一個(gè)電腦不是效率很低, 一個(gè)人不是閑人嗎?所以結(jié)對被取消了,工期一緊,測試取消了。所謂敏捷開發(fā)基本是掛牛頭賣狗肉。
所以,還是從我們自身來解決問題,首先多看看前人的經(jīng)驗(yàn)總結(jié),比如OO設(shè)計(jì)思想,在設(shè)計(jì)中,通過各種方式在設(shè)計(jì)上減低代碼耦合度。在編寫代碼上,遵循成熟的代碼規(guī)范以及不斷的重構(gòu)代碼,減少代碼中臭味。
總之,既然從事了這個(gè)行業(yè),就要熱愛這個(gè)行業(yè),牢記在心的就是:我們的每一行代碼就是我們的產(chǎn)品!保證我們每一行代碼都是高質(zhì)量的,優(yōu)秀的!
posted on 2009-04-29 22:05 advincenting 閱讀(1840) 評論(6) 編輯 收藏 所屬分類: OO設(shè)計(jì)