閱讀筆記 > 重構的格式

重構的格式

每個重構手法一般都有如下五個部分:

首先是名稱(name) 建造一個重構詞彙表,名稱是很重要的。

名稱之後是一個簡短概要(summary) 簡單介紹此重構手法的適用情景,以及它所做的事情。這部分可以幫助你更快找到你所需要的重構手法。

動機(motivation) 爲你介紹「爲什麼需要這個重構」和「什麼情況下不該使用這個重構」。

作法(mechanics) 簡明扼要地一步一步介紹如何進行此一重構。

範例(examples)
以一個十分簡單的例子說明此重構手法如何運作。

「概要」(summary)包括三個部分:

  • 一個簡短文句,介紹這個重構能夠幫助的問題;
  • 一段簡短陳述,介紹你應該做的事;
  • 一幅速寫圖,簡單展現重構前後示例;

可以展示代碼,或者展示統一建模語言(UML)圖。哪一種形式能更好呈現該重構的本質,就使用該種形式(所有UML圖都根據實現觀點(implementation perspective)而畫[Fowler,UML]。〕如果你以前見過這一重構手法,那麼速寫圖能夠讓你迅速瞭解這一重構的概況;如果你不曾見過這個重構,可能就需要瀏覽整個範例,才能得到較好的認識。

「作法」(mechanics) 出自我自己的筆記。這些筆記是爲了讓我在一段時間不做某項重構之後還能記得怎麼做。它們也頗爲簡潔,通常不會解釋「爲什麼要這麼做那麼做」。我會在「範例」(examples)給出更多解釋。這麼一來「作法」就成了簡短的筆記。如果你知道該使用哪個重構,但記不清具體步驟,可以參考「作法」部分;如果你初次使用某個重構,可能「作法」對你還不夠,你還需要閱讀「範例」。

撰寫「作法」的時候,我儘量將重構的每個步驟都寫得簡短。我強調安全的重構方式,所以應該採用非常小的步驟,並且在每個步驟之後進行測試。真正工作時我通常會採用比這裏介紹的「嬰兒學步」稍大些的步驟,然而一旦遇上臭蟲,我就會撤銷上一步,換用比較小的步驟。這些步驟還包含一些特定狀況的參考,所以它們也有檢驗表(checklist)的作用;

「範例」(examples) 像是簡單而有趣的教科書。我使用這些範例是爲了幫助解釋重構的基本要素,最大限度地避免其他枝節,所以我希望你能原諒其中的簡化工作(它們當然不是優秀商用對象設計的適當例子)。不過我敢肯定你一定能在你手上那些更復雜的情況中使用它們。某些十分簡單的重構乾脆沒有範例,因爲我覺得爲它們加上一個範例不會有多大意義。

更明確地說,加上「範例」僅僅是爲了闡釋當時討論的重構手法。通常那些代碼最終仍有其他問題,但修正那些問題需要用到其他重構手法。某些情況下數個重構經常被一併運用,這時候我會把某個範例拿到另一個重構中繼續使用。大部分時候,一個範例只爲一項重構而設計,這麼做是爲了讓每一項重構手法自給自足(self-contained),因爲這份重構名錄的首要目的還是作爲參考工具。

摘自《重構》
發佈了48 篇原創文章 · 獲贊 8 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章