Large Class

徵兆與症狀

一個類別內有太多欄位、太多方法甚至是太多行了。

出現原因

類別一開始通常是小小的,但是會隨著時間持續長大,而往既有類別內加東西,心理上也比建立一個新類別負擔要來的小。

處理方法

當一個類別有太多責任(method/function)時,可以考慮拆掉它:

  • 行為、變數名稱可能提示我們,這些是不同模組,這情況可以使用 Extract Class 來抽取出新模組。
  • 若巨大類別內的行為可以用不同方法實作,使用 Extract Subclass 來抽取出不同子類別。
  • 若巨大類別內,使用繼承是合理的,可以使用 Extract SuperclassReplace Type Code with Subclasses 來處理。
  • 但有可能在做任何抽取之前,需要先把重複程式碼處理過好幾輪,才有辦法開始做。