• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            stevenyao

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              22 隨筆 :: 1 文章 :: 67 評(píng)論 :: 0 Trackbacks
            最近剛修復(fù)了一個(gè)存在長(zhǎng)達(dá)3年多的bug,是這樣的

            軟件從3.0 升級(jí)到3.1的時(shí)候,某個(gè)數(shù)據(jù)結(jié)構(gòu)不再兼容了,但是一個(gè)數(shù)據(jù)處理的代碼需要兼容以前3.0的數(shù)據(jù)結(jié)構(gòu)。
            于是當(dāng)時(shí)的開(kāi)發(fā)人員寫下了這么一段代碼,偽代碼如下:

            if isVersion(3.1) then
                   process Data in 3.1 format
            else
                   process Data in 3.0 format
            endif

            這樣的代碼,當(dāng)時(shí)工作很好,測(cè)試絕對(duì)沒(méi)有問(wèn)題,但是當(dāng)軟件版本繼續(xù)升級(jí)到3.2....4.0....5.0....
            問(wèn)題就出來(lái)了,當(dāng)時(shí)的判斷是is 判斷,而不是比較大小,所以3.2以及以后版本都會(huì)當(dāng)作3.0處理,碰巧的是 Process data是另外開(kāi)發(fā)組開(kāi)發(fā)的,他們提供了一定的容錯(cuò)性,可以識(shí)別3.0版本的數(shù)據(jù)格式并處理,但是這樣會(huì)損失一點(diǎn)性能,大約20%左右,但是當(dāng)初數(shù)據(jù)量都不大所以測(cè)試中也沒(méi)人發(fā)現(xiàn)。直到了5.1版本,這時(shí)候數(shù)據(jù)量變得很大了,這點(diǎn)性能損失變得比較明顯了,因?yàn)檫@系統(tǒng)里數(shù)據(jù)處理涉及很多加密解碼壓縮校驗(yàn)以及遠(yuǎn)程調(diào)用等等。。。3年來(lái)浪費(fèi)了如此多資源都來(lái)源于當(dāng)初那個(gè)開(kāi)發(fā)人員的一念之差,如果他寫成 if versionGreatThan(3.0) 就一切OK。

            我了解了一下歷史,那時(shí)候正是開(kāi)發(fā)很緊張的時(shí)候,進(jìn)度壓力很大,這個(gè)編碼估計(jì)也是臨時(shí)打的補(bǔ)丁,沒(méi)有深思熟慮。
            現(xiàn)實(shí)中我們不可避免地要使用些暴力手段寫點(diǎn) hardcode來(lái)打補(bǔ)丁,有時(shí)候進(jìn)度壓力很大,沒(méi)辦法的,但是我覺(jué)得應(yīng)該有養(yǎng)成良好的習(xí)慣,在做這樣的事情的時(shí)候盡量縮小影響的范圍,比如可以寫成這樣:

            if isVersion(3.1) then
                   process Data in 3.1 format
            else if isVersion(3.0)
                   process Data in 3.0 format
            else
                   ASSERT(FALSE)
            endif

            這樣的話,當(dāng)系統(tǒng)升級(jí)到3.2的時(shí)候這個(gè)ASSERT會(huì)跳出來(lái),提醒你這里有問(wèn)題,那時(shí)候如果時(shí)間寬裕可以去找出更優(yōu)雅的解決方案。
            posted on 2010-03-13 13:25 姚冬 閱讀(532) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            色欲综合久久躁天天躁| 久久精品国产99久久久古代 | 久久99国产精品久久99小说| 久久只有这里有精品4| 久久久无码人妻精品无码| 亚洲国产成人久久综合碰碰动漫3d| 久久精品国产久精国产| 午夜精品久久久内射近拍高清 | 亚洲av成人无码久久精品| 久久精品国产99国产精品澳门| 久久精品一区二区影院| 久久w5ww成w人免费| 久久久久久久综合综合狠狠| 狠狠88综合久久久久综合网| 亚洲国产成人久久精品99| 色综合合久久天天综合绕视看| 久久久久久久久久久精品尤物| 久久精品这里热有精品| 久久精品免费全国观看国产| 热久久国产精品| 久久国产高清字幕中文| 亚洲国产精品无码久久一区二区| 久久亚洲精品无码观看不卡| 久久国产视屏| 91久久精品国产成人久久| 久久久久中文字幕| 久久国产精品久久| 国产精品美女久久久久久2018| 亚洲午夜久久久久久噜噜噜| 99久久精品国产一区二区| 精品久久久久久无码不卡| 亚洲国产天堂久久综合| 精品综合久久久久久88小说| 亚洲国产婷婷香蕉久久久久久| 国产农村妇女毛片精品久久| 久久久久人妻一区精品果冻| 久久九九久精品国产| 久久久久国产精品三级网| 噜噜噜色噜噜噜久久| 国内精品综合久久久40p| 久久99精品久久久大学生|