<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rosial

    lost memory
    數(shù)據(jù)加載中……

    《爪哇夜未眠》- 軟件工程篇 - 版本控制

    軟體具有容易被改變的特質(zhì)。軟體開(kāi)發(fā)過(guò)程中,任何程式員只要隨手敲幾個(gè)鍵,都會(huì)造成軟體的改變。這樣的改變,可能讓軟體變得更好,消除原有的 bug;也可能讓軟體變得更差,產(chǎn)生新的 bug。

    你可能也遇過(guò)這樣的例子:原本正常運(yùn)作的軟體,在你求好心切、以臻完美境地的修改之后,反倒距離完美越來(lái)越遠(yuǎn),不能順利執(zhí)行。不巧的是,再過(guò)一個(gè)小時(shí)之后,你就必須向客戶(hù)展示此軟體,汗水汨汨而下的你,該如何交差呢?

    這樣的情節(jié)聽(tīng)起來(lái)不陌生,每個(gè)程式員都遇過(guò),所以老一代的程式員常諄諄告誡我們「沒(méi)壞的部分,就不要去亂動(dòng),免得出了亂子」,這個(gè)原則就是怕我們把程式越改越糟。但是時(shí)代不同了,現(xiàn)在的程式員卻被鼓勵(lì)「沒(méi)壞的部分,只要你發(fā)現(xiàn)有任何不完美之處,還是要主動(dòng)去修改」,以防積弊日久,一發(fā)不可收拾。Martin Fowler 稱(chēng)這種「沒(méi)有錯(cuò)但只是不完美的程式碼」為「bad smell」,嗅到 bad smell 就要馬上處理,這就稱(chēng)為 refactoring。我現(xiàn)在使用的 Java IDE 是 IntelliJ IDEA,這套軟體就是以其聰明的即時(shí)分析和方便的 refactoring 功能深獲我所喜愛(ài)。

    Martin Fowler 還認(rèn)為 testing 對(duì)于 refactoring 很重要,我認(rèn)為 version control 對(duì) refactoring 也很重要。有了 version control 工具軟體的輔助,你不用擔(dān)心程式越改越糟,因?yàn)?version control 工具軟體可以幫我們記錄許多版本,你可以隨時(shí)切換回任一個(gè)時(shí)刻的版本,就像是時(shí)光機(jī)器一般。

    版本控制(version control)更宏觀(guān)的稱(chēng)呼方式是 software configuration management,簡(jiǎn)稱(chēng)為 SCM。或者應(yīng)該這么說(shuō),SCM 提供對(duì)版本控制的支援,但是 SCM 功能更完善。

    我剛進(jìn)入清華大學(xué)資訊工程系就讀碩士班時(shí),必須和許多同學(xué)一同開(kāi)發(fā) C 語(yǔ)言版本的 VOD 系統(tǒng),當(dāng)時(shí)經(jīng)歷了一場(chǎng)大災(zāi)難。回想起來(lái),災(zāi)難的來(lái)源主要有下列兩點(diǎn):

    模組版本不一致的問(wèn)題:因?yàn)橛?jì)畫(huà)參與者人數(shù)眾多,同一個(gè) Sub-system 由一個(gè)教授負(fù)責(zé),這個(gè)教授又有數(shù)個(gè)學(xué)生參與,所以版本混亂,常常無(wú)法進(jìn)行整合。
    改變程式之后,反而不能執(zhí)行:原本已經(jīng)可順利執(zhí)行的軟體,在某些人更動(dòng)一些「無(wú)關(guān)緊要」的程式碼之后,反倒不能執(zhí)行。
    不要小看這兩個(gè)問(wèn)題,這已經(jīng)夠讓我們忙得團(tuán)團(tuán)轉(zhuǎn)了。加上一個(gè)學(xué)長(zhǎng)遺留下一些形同垃圾的程式碼,更是彷彿不定時(shí)炸彈,隨時(shí)會(huì)爆炸。(還好我們 VOD 小組內(nèi)有一個(gè)很優(yōu)秀的施同學(xué),把那堆垃圾整個(gè)改寫(xiě)成井然有序的程式碼,我實(shí)在很佩服他鍥而不舍的努力)。加上我當(dāng)時(shí)并不熟悉 VOD,我的學(xué)長(zhǎng)竟然把所有的事情通通扔給我,我的壓力很大,因?yàn)閮?nèi)分泌失調(diào),我的整個(gè)臉和脖子都長(zhǎng)滿(mǎn)疹子,當(dāng)時(shí)已經(jīng)到了毀容的地步了。一想到那時(shí)的那些倒楣事,我到現(xiàn)在還是覺(jué)得一肚子氣。

    上述的兩點(diǎn)問(wèn)題都可以透過(guò)導(dǎo)入 SCM 而輕易解決。聰明人從自己的挫敗中學(xué)習(xí),更聰明的人從別人的挫敗中學(xué)習(xí)。我已經(jīng)告訴你,我過(guò)去因?yàn)榍啡?SCM 而導(dǎo)致了諸多問(wèn)題,非常聰明的你,如果還沒(méi)開(kāi)始使用 SCM 的話(huà),你應(yīng)該要好好開(kāi)始規(guī)劃導(dǎo)入 SCM。

    導(dǎo)入 SCM 可以說(shuō)是難度最低的軟體工程,但是收效良好。特別注意:SCM 是 CMM level 2 的要求之一,對(duì)于有意遵循 CMM 的建議來(lái)改進(jìn)軟體品質(zhì)的公司而言,采行 SCM 無(wú)疑地是最值得最先采行的步驟。

    目前 SCM 的產(chǎn)品眾多,大多數(shù)人選擇使用免費(fèi)的 CVS,或者價(jià)格便宜的 Microsoft Visual SourceSafe,另外 MKS、Rational ClearCase、PVCS Dimensions、Oracle9i SCM 也是這樣的產(chǎn)品,但顯然功能比較高檔。另外,有些 Java 開(kāi)發(fā)工具也整合進(jìn)相關(guān)的功能,例如 Borland JBuilder、Together ControlCenter:

    不只軟體工程需要版本控制,在我看來(lái),只要是更動(dòng)頻率很高的任何事物,都需要版本控制,例如我們的憲法,就需要版本控制。李登輝總統(tǒng)主政的后十年,憲法歷經(jīng)六次修改,修憲的頻率之高,幾乎已經(jīng)到了一年一修的地步,乃至于到底我們的憲法精神目前是類(lèi)似美國(guó)的總統(tǒng)制、類(lèi)似英國(guó)的內(nèi)閣制、類(lèi)似法國(guó)的雙首長(zhǎng)制、或者是所謂的改良式雙首長(zhǎng)制,已經(jīng)沒(méi)人搞得清楚了。最近傳出,陳水扁總統(tǒng)有意在下半年啟動(dòng)修憲工程,身為 SCM 愛(ài)好者的我,建議政府購(gòu)買(mǎi)一套 PVCS 或 Rational ClearCase,以為修憲工程的版本控制之用。這么一來(lái),如果修憲又修出一頭權(quán)責(zé)失衡的憲政怪獸,而這只怪獸準(zhǔn)備吞噬整個(gè)國(guó)家時(shí),我們可以迅速地利用版本控制的回溯功能,恢復(fù)到舊版的憲法,以回歸憲法秩序,免得禍國(guó)殃民。

    「可是 SCM 軟體都很貴,在政府財(cái)政困窘,債務(wù)高達(dá)近三兆之際,要用什么樣的名目支出呢?」我說(shuō)你實(shí)在是多慮了,我們可以從近來(lái)曝光的國(guó)安局秘密帳戶(hù)的數(shù)十億中,省下外交部長(zhǎng)簡(jiǎn)又新兩套西裝的錢(qián),就有十四萬(wàn)元了呀!還可以把帳全數(shù)賴(lài)到逃亡國(guó)外的劉冠軍身上呢。

    PS1. 最近唱片和電影業(yè)發(fā)起 404 反盜版大游行。有鑒于我的文章到處被亂 copy,所以我特別改編 IFPI 的話(huà)來(lái)呼吁大家:「今天你 copy 一篇文章,明天你將失去閱讀好文章的機(jī)會(huì)。我是蔡學(xué)鏞,我希望一直寫(xiě)文章給大家閱讀。」如果你真的想把我的文章與他人分享,你可以利用 hyperlink 的方式,連結(jié)到該文章的 URL 即可。

    PS2. 這是 Sleepless in Java 專(zhuān)欄開(kāi)張三年以來(lái),寫(xiě)得最痛苦的文章,因?yàn)閷?xiě)這篇文章的同時(shí),住處旁一間「不知道祭祀何方神圣」的廟正進(jìn)行廟會(huì),他們把我們的街道整個(gè)堵住搭起棚架以做為酒席的場(chǎng)所。我擔(dān)心我們這里萬(wàn)一發(fā)生火警,消防車(chē)根本沒(méi)辦法進(jìn)來(lái)。更慘的是,他們還搭起了舞臺(tái),在臺(tái)上演唱的不是我喜愛(ài)的孫燕姿,而是一個(gè)接著一個(gè)五音不全又愛(ài)現(xiàn)的人。即使我關(guān)在屋內(nèi)仍清晰地聽(tīng)到那些可怕的歌聲,逼得我把 Shakira 的「Whenever, Wherever」播放到最大聲,用音量壓過(guò)他們的「媽媽請(qǐng)你也保重」。文章寫(xiě)完了,我的耳朵也快聾了,我決定快快逃離這個(gè)人間煉獄,到天瓏買(mǎi)書(shū)去。

    posted on 2006-07-10 15:02 rosial 閱讀(479) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 蔡學(xué)鏞

    主站蜘蛛池模板: 无码永久免费AV网站| 亚洲三级高清免费| 久久aⅴ免费观看| 最近中文字幕完整免费视频ww | 三年片在线观看免费观看高清电影| 在线观看AV片永久免费| 国产美女无遮挡免费视频网站| 亚洲第一网站男人都懂| 国产亚洲人成网站在线观看不卡| 久久亚洲AV无码精品色午夜| 亚洲一区二区三区写真 | 一级做a爰片久久毛片免费陪 | 4338×亚洲全国最大色成网站| 亚洲不卡中文字幕无码| ASS亚洲熟妇毛茸茸PICS| 免费福利在线观看| 无码日韩精品一区二区三区免费 | 亚洲午夜成人精品无码色欲| 一级特黄a免费大片| 免费无码又爽又刺激高潮视频| 妞干网免费视频在线观看| 亚洲综合色视频在线观看| 亚洲毛片无码专区亚洲乱| 综合偷自拍亚洲乱中文字幕| 免费av一区二区三区| 全免费一级午夜毛片| 国产亚洲一区二区在线观看| 久久精品亚洲AV久久久无码 | 国产成人无码免费看片软件| 啦啦啦完整版免费视频在线观看 | 女bbbbxxxx另类亚洲| 香蕉成人免费看片视频app下载| 成年在线网站免费观看无广告 | 亚洲一区中文字幕久久| 久久人午夜亚洲精品无码区| 久久成人免费电影| 免费国产美女爽到喷出水来视频| 亚洲国产人成网站在线电影动漫| 韩国亚洲伊人久久综合影院| 精品无码国产污污污免费网站 | 亚洲国产精品久久久久|