何謂重構(gòu)
- 名詞定義:對(duì)軟件內(nèi)部結(jié)構(gòu)的一種調(diào)整晋涣,目的是在不改變軟件可觀察行為的前提下仪媒,提高其可靠性,降低其修改成本谢鹊。
- 動(dòng)詞定義:使用一系列軟件重構(gòu)手法算吩,在不改變軟件可觀察行為的前提下,調(diào)整其結(jié)構(gòu)
- 擴(kuò)展定義:首先佃扼,重構(gòu)的目的是使軟件更容易被理解和修改偎巢。與之形成對(duì)比的性能優(yōu)化,與重構(gòu)一樣性能優(yōu)化通常不會(huì)改變組件的行為兼耀。但是兩者出發(fā)點(diǎn)不同压昼,性能優(yōu)化往往使代碼較難理解求冷,但為了性能所需不得不這么做。其次窍霞,重構(gòu)不會(huì)改變軟件可觀察的行為——重構(gòu)之后軟件功能一如既往
為何重構(gòu)
重構(gòu)是個(gè)工具匠题,它可以用于以下幾個(gè)目的:
- 重構(gòu)改進(jìn)軟件設(shè)計(jì)
- 重構(gòu)使軟件更容易理解
- 重構(gòu)幫助找到 bug
- 重構(gòu)提高編程速度
何時(shí)重構(gòu)
常常有人問(wèn)怎樣安排重構(gòu)時(shí)間表。我們是不是每?jī)蓚€(gè)月就專(zhuān)門(mén)安排兩個(gè)星期重構(gòu)但金?
幾乎任何情況下都反對(duì)專(zhuān)門(mén)抽出時(shí)間進(jìn)行重構(gòu)韭山。你不應(yīng)該為了重構(gòu)而重構(gòu)。
你應(yīng)該遵循三次法則冷溃,第一次做某件事時(shí)只管去做钱磅;第二次做類(lèi)似的時(shí)候產(chǎn)生反感,但無(wú)論如何還是可以去做秃诵;第三次再做類(lèi)似的事情续搀,你就應(yīng)該重構(gòu)。
事不過(guò)三菠净,三則重構(gòu)
以下是重構(gòu)的時(shí)機(jī):
添加功能時(shí)重構(gòu)禁舷,要掌握兩頂帽子原則,分別是添加新功能和重構(gòu)毅往。首先你會(huì)嘗試添加新功能牵咙,然后意識(shí)到改變下程序結(jié)構(gòu),功能的添加會(huì)容易很多攀唯。于是你換了一頂帽子洁桌,做一會(huì)重構(gòu)工作。結(jié)構(gòu)調(diào)整后侯嘀,你又換上另一頂帽子另凌,繼續(xù)添加新功能
修補(bǔ)錯(cuò)誤時(shí)重構(gòu),重構(gòu)代碼戒幔,往往能幫助找到 bug
code review時(shí)重構(gòu)吠谢,code review時(shí),往往會(huì)提出重構(gòu)代碼的建議诗茎。