重構詞源

2003 年 9 月 10 日

重構 一詞從何而來?

在撰寫重構書籍時,這個問題在我腦海中浮現了好幾次。我知道這個術語只在一個相當小的社群中使用,因此為了找出重構的詞源,我與該社群中的人(Ward Cunningham、Kent Beck、Bill Opdyke、John Brant、Don Roberts、Ralph Johnson 等)交談,以找出是什麼原因讓他們想出這個術語。

顯而易見的答案來自於數學中的因式分解概念。你可以將一個表達式,例如 x^2 + 5x + 6,因式分解成 (x+2)(x+3)。透過因式分解,你可以讓許多數學運算變得更容易。顯然地,這與將 18 表示為 2*3^2 非常相似。我確實經常聽人說,一旦程式被分解成類似的邏輯區塊後,這個程式就會被視為因式分解得很好。

當我詢問重構的創作者時,普遍的答案是他們不知道。這個術語已經存在一段時間了,他們不知道它從何而來。

我得到的一個明確答案來自 Bill Opdyke,他撰寫了關於重構的 第一篇論文。他記得在與 Ralph Johnson 散步時的一段對話。他們當時正在討論當時很流行的軟體工廠概念。他們推測,由於軟體開發更 類似設計而非製造,因此最好稱之為軟體工廠。重工廠後來成為 Ralph 和他的同事使用的 顧問組織 的名稱。

我們現今所稱的重構基礎來自於 Smalltalk 社群。然而,將程式重構成因數的隱喻也是 Forth 社群的一部分。 Bill Wake 挖出 第一次在印刷品中提到「重構」一詞,出現在 Leo Brodie 於 1984 年出版的《思考 Forth》一書中。我們相當確定這個用法並未從 Forth 社群傳遞到 Smalltalk 社群,而是獨立發展出來的。