重構邊界

2004 年 9 月 1 日

最近在 重構郵件清單 上有討論到什麼是重構,什麼不是。在這些討論中,總是有個風險,就是爭論到底有多少天使可以站針尖上,但思考這些邊界確實是有用的。

我書中的 重構定義 是故意非正式的。這種非正式性建立在幾個明顯開放給詮釋的詞句上

  • 不改變其可觀察的行為:這引發了一個問題,什麼是可以觀察的行為?基本上,這表示軟體仍然做著它之前做的事,但你可以用許多方式來詮釋這句話。
  • 讓它更容易理解,更便宜修改:這點說明了重構的目的。我們可以對我們的程式做許多變更,但在我看來,重構就是讓它更容易理解和變更。如果變更目的不同,在我看來,那就不算是重構。

重構的精髓在於一連串小的行為保留變更。儘管重構不是可以正式定義的東西,但它仍然是一個相當精確的術語,而且我確實想要避免 RefactoringMalapropism。但我認為值得思考這些案例,我將它們放在不同的 bliki 條目中:IsChangingInterfacesRefactoringIsFixingAnUnknownBugRefactoringIsOptimizationRefactoringIsDeclarationOrderingRefactoring