Long Function

徵兆與症狀

通常你看到一個超過十行的 method/function,內心都需要問自己一下,這個 method/function 是不是作太多事情了。

出現原因

只往程式庫裡面加東西,但卻不移除任何東西。

按照人類大腦運作方式,往程式庫裡面加上新 method/function 往往比改寫既有 method/function 來的容易一些,需要一陣子後才會驚覺程式庫變成難以處理的怪獸。

處理方法

有個實用方法,如果你覺得需要在 method/function 裡面寫註解,通常寫個新 method/function 會好一些。

  • 可以使用 Extract Function 來減少 mehtod/function 的大小。
  • 抽取過程中,你可能會發現有一些暫存的變數,這時候可以用 Replace Temp with Query;若是需要傳遞的參數越來越多,可以用 Introduce Parameter ObjectPreserve Whole Object
  • 如果你嘗試過以上作法,但還是不太管用,可以使用 Replace Function with Command
  • 註解、條件判斷及迴圈往往也是抽取的暗示,可以使用 Decompose Conditional 來處理條件判斷,如果有多個 switch 結構在判斷類似事情的話,可以考慮使用 Replace Conditional with Polymorphism
  • 如果迴圈內做的事情不夠單一,可以使用 Split Loop 拆成單一任務,然後再抽取出來。