重構(gòu)代碼很危險(xiǎn)-如何避免重構(gòu)帶來的危險(xiǎn)_第1頁
重構(gòu)代碼很危險(xiǎn)-如何避免重構(gòu)帶來的危險(xiǎn)_第2頁
重構(gòu)代碼很危險(xiǎn)-如何避免重構(gòu)帶來的危險(xiǎn)_第3頁
重構(gòu)代碼很危險(xiǎn)-如何避免重構(gòu)帶來的危險(xiǎn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第第頁重構(gòu)代碼很危險(xiǎn):如何避免重構(gòu)帶來的危險(xiǎn)重構(gòu)代碼很危險(xiǎn):如何避免重構(gòu)帶來的危險(xiǎn)

發(fā)表于:2023-12-13來源:IT博客大學(xué)習(xí):不詳點(diǎn)擊數(shù):標(biāo)簽:重構(gòu)

重構(gòu)代碼很危險(xiǎn):如何避免重構(gòu)帶來的危險(xiǎn)?重構(gòu)代碼很危險(xiǎn),它會(huì)給測試工作增加巨大的負(fù)擔(dān)。除非你的程序需要重構(gòu),一定不要輕易重構(gòu)代碼。我這里所說的并不是把一個(gè)for循環(huán)改成while循環(huán),

重構(gòu)代碼很危險(xiǎn),它會(huì)給(測試)工作增加巨大的負(fù)擔(dān)。除非你的程序需要重構(gòu),一定不要輕易重構(gòu)代碼。我這里所說的并不是把一個(gè)for循環(huán)改成while循環(huán),或把一個(gè)StringBuffer改成StringBuilder,我說的是大動(dòng)作,例如重寫一個(gè)方法,一個(gè)函數(shù),甚至整個(gè)類或包。如果你缺乏對(duì)一個(gè)方法或一個(gè)類的了解,那你重構(gòu)它的條件就不充分。即使你有一個(gè)天才的計(jì)劃,你也需要和團(tuán)隊(duì)一起設(shè)計(jì)其中重大的修改。

當(dāng)屬于下列情況時(shí),你不該重構(gòu)

對(duì)于你來說,它的邏輯看起來過于復(fù)雜,你沒有花時(shí)間去分析它。

你不理解為什么前任程序員要這樣編寫。

你著手的是一個(gè)很重要的系統(tǒng),而且時(shí)間很緊。

你是團(tuán)隊(duì)里的新成員,或新接觸這個(gè)項(xiàng)目,或這種語言。

當(dāng)屬于下列情況時(shí),你可以重構(gòu)

現(xiàn)有的代碼對(duì)它要實(shí)現(xiàn)的功能顯得過于復(fù)雜,并且你分析過它。

修改后的代碼遠(yuǎn)比現(xiàn)存的代碼邏輯要清晰。

你有足夠的時(shí)間,人手,財(cái)力來支持對(duì)項(xiàng)目進(jìn)行(回歸)測試。

現(xiàn)有的代碼陳舊無效率。

無人認(rèn)領(lǐng)的,寫的很爛的代碼都屬于此類。

跟你的一位同事談?wù)搶?duì)這部分程序進(jìn)行重構(gòu)的好處和存在的風(fēng)險(xiǎn),你們兩個(gè)都贊成重構(gòu)。

如何降低重構(gòu)的風(fēng)險(xiǎn)

權(quán)衡一下對(duì)一段代碼進(jìn)行重構(gòu)的利與弊,找出降低風(fēng)險(xiǎn)的方法。調(diào)試一段你經(jīng)過重構(gòu)但卻使產(chǎn)品崩潰的代碼,這對(duì)你來說將會(huì)是在這個(gè)行業(yè)中最有壓力的事情。

使用(自動(dòng)化)的回歸測試,快速的驗(yàn)證你的修改。這非常重要,如果沒有準(zhǔn)備(自動(dòng)化)測試,你應(yīng)該在做任何修改前建好它。

盡量讓你的重構(gòu)處于很短的(開發(fā))周期,產(chǎn)品更新發(fā)布周期也盡可能短。

把你重構(gòu)的代碼和其它程序隔離開,這樣能讓你更容易找到出問題的地方。

為你的重構(gòu)活動(dòng)準(zhǔn)備測試計(jì)劃,包括回歸測試,(功能測試),反向測試,負(fù)載測試,(性能)測試和用戶確認(rèn)測試。

投入全部精力來研究其中的邏輯,不要分心做其它事情。

在需要的地方使用設(shè)計(jì)模式。不要為了設(shè)計(jì)模式而增加設(shè)計(jì)模式。設(shè)計(jì)模式應(yīng)該用在合適的時(shí)間和合適地方。

小粒度重構(gòu)

當(dāng)你在開封一個(gè)方法時(shí),如果你發(fā)現(xiàn)其中有一部分可以改進(jìn),那你就該考慮它,改進(jìn)它。整潔的代碼是我們需要的,因?yàn)閷懙暮軤€的代碼我們到處可見。和你的同事討論它們,當(dāng)有人要修改你的代碼時(shí)不要固守己見。重構(gòu),然后回歸測試,然后才提交代碼。沒有人希望自己提交的代碼會(huì)弄垮系統(tǒng)。

下面是一些比較有深度的閱讀材料。

重構(gòu):改善既有代碼的設(shè)計(jì)

代碼整潔之道

WorkingEffectivelywithLegacyCode

程序員的職業(yè)素養(yǎng)

忍住你的欲望,不要試圖重構(gòu)你不理解的代碼。多問問題,努力能清楚他們?yōu)槭裁匆殉绦驅(qū)懗蛇@樣。也許他們有很好的理由。如果你找到一段很古老的代碼,很有可能它們是按照古老的方式寫的。每天都在新增的API

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論