2011-02-15

Refactoring 110 - Extract Method

Bad smell:
  • Comments
  • Duplicated code
  • Feature envy
  • Long method
使用時機:
  • method 內容太長時。
  • 或需要註解時。
  • 或不同的 method 裡有相似的 code 時。
方法:
  • 將一段程式區塊抽出成一個 method,並以 method name 描述該 method 的目的。
限制:
  • 無法處理多筆回傳值的狀況,當遇上這種狀況時,可以使用 Replace temp with query 或者 Replace method with method object 處理多筆回傳值的狀況。

好處:
  • 提高 reuse
    • 減少 duplicated code 。
  • 程式可讀性
    • 如果可以從 method 名稱就可以知道在做什麼,那就不需要註解了。
    • 反過來說,當需要註解時,就可以考慮使用 Extract method 了。
    • 如果抽出 method 有助於增加可讀性,即使抽出的程式碼比抽出的 method 名稱還短,也應該抽出來。
  • 可供 overriding
    • long method 非常不適合於 overriding。
Method 命名很重要,如果想不到合適的名稱,就不該抽出新的 method;以做了什麼命名,而非怎麼做命名。

盡量一個 method 一個回傳值,因為若有多個回傳值,表示該 method 做太多事了,除非那些事是不可以拆開的。

沒有留言:

張貼留言