一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

如何進(jìn)行大規(guī)模重構(gòu)

  從定義上看,重構(gòu)意味著改變程序的內(nèi)部結(jié)構(gòu),而不改變外部的功能行為。這樣做大多是為了提高程序的非功能性屬性,從而提高代碼的質(zhì)量。然而,即便是經(jīng)驗(yàn)豐富的敏捷開發(fā)者,在進(jìn)行大規(guī)模的重構(gòu)時(shí)也是如履薄冰。社區(qū)中的成員對掌控大規(guī)模重構(gòu)的幾種方式進(jìn)行了討論。

  在最近的討論中,Andreas想要知道三種可能完成大規(guī)模重構(gòu)的方法中哪種最好。他的方式包括,

  • 一次完成——定義最終狀態(tài)的結(jié)構(gòu),然后將代碼一次完成。
  • 分而治之——將一大團(tuán)亂七八糟的代碼分為兩段,然后重復(fù)這樣的操作,直至完成……
  • 壓制(Strangling)——壓制類

  大多數(shù)回應(yīng)者都認(rèn)為“一次完成”幾乎不會(huì)成功的。Aaron Digulla指出他在整個(gè)職業(yè)生涯中一直使用壓制的方法。這種想法是要慢慢地將不好的代碼變?yōu)閸湫碌膬?yōu)質(zhì)代碼,并在過程中用測試來保證轉(zhuǎn)換的正確性。這種策略的優(yōu)勢在于,因?yàn)槟闶菑男∑温_始的,因此風(fēng)險(xiǎn)很小。David Hall和Shane MacLaughlin強(qiáng)調(diào)了分而治之方法的重要性,但也要針對程序所有修改的部分編寫充分的測試。一些人建議完全推倒重寫,但是正如InfoQ之前的一篇文章所說的,那會(huì)讓你面臨一系列的挑戰(zhàn)

  Sibylle Peter和Sven Ehrke提到,他們使用的方法是,先對工作進(jìn)行評估,然后為大規(guī)模的重構(gòu)制定主要計(jì)劃。對于每個(gè)重構(gòu)步驟,他們都會(huì)遵循以下三步:

  • 分析:定義想要的結(jié)果,并找到達(dá)到目的的方法。
  • 實(shí)現(xiàn):應(yīng)用重構(gòu)技術(shù)來相應(yīng)地改變代碼。
  • 穩(wěn)定:應(yīng)用一些方法,確保實(shí)現(xiàn)的結(jié)果是持久的。

  另一種讓大規(guī)模重構(gòu)得以進(jìn)行的方法是“天皇牌”(Mikado)方法。回顧天皇牌方法的歷史,我們會(huì)發(fā)現(xiàn)它與Daniel Brolund和Ola Ellnestam所做的工作有關(guān),而它的名字來自于天皇牌游戲。根據(jù)這個(gè)方法,

修改代碼就像進(jìn)行天皇牌游戲一樣。當(dāng)你想要對代碼庫做出修改時(shí),幾乎無法以正確的方式做出準(zhǔn)確的修改你需要做些準(zhǔn)備、移動(dòng)代碼、抽取類等等。我們很少會(huì)第一次就抓到天皇牌。更多的是,在“重構(gòu)天皇”可用之前,你需要做一系列的變動(dòng),有條不紊地向你的牌堆的底部進(jìn)發(fā),以達(dá)到目的。

  使用天皇牌方法,首先要記住最終的目的。對于任何需要重構(gòu)的代碼,我們首先要?jiǎng)?chuàng)建一幅依賴圖,在上面寫下最終的目標(biāo)。下一步是識(shí)別出想要達(dá)到目標(biāo)所需要的直接前提,然后以這種方式繼續(xù)識(shí)別依賴關(guān)系,直到達(dá)到?jīng)]有任何前提或者依賴的葉子節(jié)點(diǎn)。這可能是開始重構(gòu)最好的方式。一旦有了依賴關(guān)系圖,那么核心思想就是從葉子節(jié)點(diǎn)一步一步回溯,直到達(dá)到目標(biāo)。

  這種方法強(qiáng)調(diào)了撤銷操作的重要性,團(tuán)隊(duì)不應(yīng)該害怕因?yàn)榛赝硕鴴仐壱恍└淖儭K€建議不要停止分析,而應(yīng)該從最基本步驟開始,然后理解順序。現(xiàn)在他們已經(jīng)提供了關(guān)于“天皇牌”方法的書的草稿版本。

  因此,大規(guī)模重構(gòu)很難做,做好這項(xiàng)工作的關(guān)鍵在于要識(shí)別出起點(diǎn),然后沿著路線小步前進(jìn)。

  查看英文原文:How To Do Large Scale Refactoring

it知識(shí)庫如何進(jìn)行大規(guī)模重構(gòu),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品一二三区 | 涩涩涩爱 | 久久精品国产精品青草 | 久久婷婷一区二区三区 | 日本伊人色综合网站 | 国产精品亚洲一区二区三区正片 | 精品视频在线观看免费 | 婷婷在线五月 | youjizz日韩| 亚洲综合涩 | 色视频一区二区三区 | 九九视频网 | 国产精品久久久久无毒 | 中文国产成人精品久久水 | 国产啊v在线观看 | 国产成人精品永久免费视频 | 中文字幕免费在线视频 | 国产精品天天看特色大片不卡 | 九九热免费在线观看 | 中日韩美中文字幕 | 夜色1网站 | 91精品国产三级在线观看 | 国产美女免费观看 | 九月婷婷亚洲综合在线 | 亚洲国产99 | 国产成人精品一区二三区在线观看 | 一区二区午夜 | 国产成人亚洲综合91精品555 | 国产91高清 | 精品国产成人a在线观看 | 一区二区三区免费在线视频 | 香蕉免费看一区二区三区 | 国内精品日本久久久久影院 | 成年美女黄网站色大 | 精品亚洲国产国拍 | 4hu四虎永久地址 | 91福利国产在线观看网站 | 男女午夜性爽快免费视频不卡 | 99久久综合狠狠综合久久 | 久久91精品国产91 | 久久综合亚洲鲁鲁五月天欧美 |