<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            如何進(jìn)行大規模重構

            發(fā)表于:2014-05-26來(lái)源:博客園作者:不詳點(diǎn)擊數: 標簽:重構
            從定義上看,重構意味著(zhù)改變程序的內部結構,而不改變外部的功能行為。這樣做大多是為了提高程序的非功能性屬性,從而提高代碼的質(zhì)量。然而,即便是經(jīng)驗豐富的敏捷開(kāi)發(fā)者,在進(jìn)行大規模的重構時(shí)也是如履薄冰。社區中的成員對掌控大規模重構的幾種方式進(jìn)行了

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

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

              一次完成——定義最終狀態(tài)的結構,然后將代碼一次完成。

              分而治之——將一大團亂七八糟的代碼分為兩段,然后重復這樣的操作,直至完成……

              壓制(Strangling)——壓制類(lèi)

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

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

              分析:定義想要的結果,并找到達到目的的方法。

              實(shí)現:應用重構技術(shù)來(lái)相應地改變代碼。

              穩定:應用一些方法,確保實(shí)現的結果是持久的。

              另一種讓大規模重構得以進(jìn)行的方法是“天皇牌”(Mikado)方法?;仡櫶旎逝品椒ǖ臍v史,我們會(huì )發(fā)現它與Daniel Brolund和Ola Ellnestam所做的工作有關(guān),而它的名字來(lái)自于天皇牌游戲。根據這個(gè)方法,

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

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

              這種方法強調了撤銷(xiāo)操作的重要性,團隊不應該害怕因為回退而拋棄一些改變。他還建議不要停止分析,而應該從最基本步驟開(kāi)始,然后理解順序?,F在他們已經(jīng)提供了關(guān)于“天皇牌”方法的書(shū)的草稿版本。

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

            原文轉自:http://kb.cnblogs.com/page/72874/

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>