--- robots: noindex, nofollow tags: refactoring --- # Large Class ![](https://i.imgur.com/z9HwPFy.png) ## 徵兆與症狀 一個類別內有太多欄位、太多方法甚至是太多行了。 ## 出現原因 類別一開始通常是小小的,但是會隨著時間持續長大,而往既有類別內加東西,心理上也比建立一個新類別負擔要來的小。 ## 處理方法 當一個類別有太多責任(method/function)時,可以考慮拆掉它: - 行為、變數名稱可能提示我們,這些是不同模組,這情況可以使用 `Extract Class` 來抽取出新模組。 - 若巨大類別內的行為可以用不同方法實作,使用 `Extract Subclass` 來抽取出不同子類別。 - 若巨大類別內,使用繼承是合理的,可以使用 `Extract Superclass` 或 `Replace Type Code with Subclasses` 來處理。 - 但有可能在做任何抽取之前,需要先把重複程式碼處理過好幾輪,才有辦法開始做。