代碼會(huì)生銹嗎?
?? 代碼會(huì)生銹嗎?這真是一個(gè)很奇怪的問(wèn)題,代碼怎么會(huì)生銹呢?但是現(xiàn)在的許多軟件企業(yè),卻總認(rèn)為代碼放久了就會(huì)發(fā)霉,會(huì)生銹,因此每次發(fā)布的新版本總拋棄了原來(lái)所有的代碼從頭來(lái)過(guò)。這種做法真的可取嗎?我們且不說(shuō)這么做要浪費(fèi)多少人力物力(反正公司有的是錢(qián) really?但為什么工資只開(kāi)這么一點(diǎn)點(diǎn),配的電腦也這么爛),就僅僅從新版本的質(zhì)量來(lái)講,也不見(jiàn)得盡如人意。誰(shuí)能夠保證新版本的核心人員與原來(lái)版本是同一批人,那么又怎么來(lái)保證原來(lái)的“經(jīng)驗(yàn)積累”能夠在新版本中發(fā)揮作用。另外,老版本的代碼多是經(jīng)過(guò)項(xiàng)目實(shí)踐來(lái)檢驗(yàn)的,它們身上可能帶著修復(fù)bug后,留下的傷疤,但是至少它已經(jīng)痊愈了,他已經(jīng)成為了一名經(jīng)歷過(guò)戰(zhàn)場(chǎng)洗禮的戰(zhàn)士。而新版本呢,好比是在軍校學(xué)習(xí)的學(xué)生,它們可進(jìn)行了更為先進(jìn)的戰(zhàn)略戰(zhàn)術(shù)的學(xué)習(xí)(一些更先進(jìn)的技術(shù))但是,遺憾的是他們從來(lái)沒(méi)有在戰(zhàn)場(chǎng)上真槍實(shí)彈的打過(guò)仗,(在項(xiàng)目中許多新技術(shù)的應(yīng)用往往是程序員邊學(xué)邊用的,當(dāng)然,這也是軟件行業(yè)的一個(gè)特點(diǎn))因此能否成為合格的戰(zhàn)士還需要經(jīng)過(guò)實(shí)戰(zhàn)(項(xiàng)目)的考驗(yàn),而不僅僅是考試(測(cè)試人員)的成績(jī)。如果我們把一些戰(zhàn)斗經(jīng)驗(yàn)豐富的老戰(zhàn)士,進(jìn)一步培訓(xùn)(對(duì)老版本進(jìn)行修復(fù),重構(gòu))我想他們的戰(zhàn)斗力可能會(huì)遠(yuǎn)遠(yuǎn)超過(guò)這些新兵?
?? 但是為什么這么多的企業(yè),都會(huì)不約而同的選擇重新編寫(xiě)代碼呢,我想很可能是那些程序員在作怪(呵呵,不好意思我也是一個(gè)程序員,在這里只是就事論事 不敢含有任何貶低咱程序員的意思)。程序員總是不停的在抱怨,原來(lái)的代碼事如何如何的亂,幾頁(yè)的代碼竟然沒(méi)有任何注釋?zhuān)S許多多的代碼我竟然不知道做什么用的,讓我修改,我還不如重寫(xiě)一遍呢?這是發(fā)生在程序員修改別人寫(xiě)的代碼時(shí),時(shí)常會(huì)發(fā)的牢騷。 原來(lái)的代碼真的真么糟嗎,其實(shí)并不盡然。那寫(xiě)你看起來(lái)一團(tuán)糟的代碼,也許就是修改某個(gè)
bug 時(shí)留下的傷疤,如果從頭寫(xiě)一段新的代碼,誰(shuí)能保證你的代碼沒(méi)有原來(lái)那bug呢?其實(shí)我們可以采用很多重構(gòu)的方法來(lái)解決,如設(shè)計(jì)模式的開(kāi)閉原則,就可以很好的規(guī)避這一類(lèi)問(wèn)題。
? 因此我認(rèn)為,一個(gè)企業(yè)不要總是頻繁的發(fā)布新版本,只有可以明確的指出現(xiàn)有版本已經(jīng)滿(mǎn)足不了市場(chǎng)的需求了,我們才需要重新規(guī)劃。我們需要明確,我們當(dāng)前最需要做的是對(duì)現(xiàn)有版本修修補(bǔ)補(bǔ),使之不斷完善,不斷健壯。君不見(jiàn),網(wǎng)景的netscape 和borland 的dbasde就是前車(chē)之鑒嗎?
?
?? 注:網(wǎng)景的netscape 因新版本重寫(xiě)代碼,整整用了3年的時(shí)間,其市場(chǎng)份額從80% 降到了20%
?????? borland 從些Arago(dbase的前身) 也把市場(chǎng)白白的讓給了 access
posted on 2006-08-30 11:14 康文 閱讀(261) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 軟件工程