l

2016年2月22日 星期一

用Inline Class移除Lazy Class怪味道Refactoring

Feb. 06 17:20~18:03

螢幕截圖 2016-02-06 18.02.58

▲Inline Cat

 

某個具備Lazy Class怪味道的類別如果和其它類別存在繼承關係,可以用昨天介紹的〈用Collapse Hierarchy移除Lazy Class怪味道〉來處理。如果存在聚合(aggregation) 關係,則可以用今天介紹的Inline Class重構來處裡。

▼以下例子節錄自《Refactoring》。你有一個Person類別,它包含了一個用來記錄電話號碼的TelephoneNumber類別。
螢幕截圖 2016-02-06 17.31.51

螢幕截圖 2016-02-06 17.33.45

***

▼你覺得TelephoneNumber類別沒做什麼事,不需要單獨存在,於是套用Inline Class把它跟Person類別合併。

螢幕截圖 2016-02-06 17.37.05

***

看到這裡不知道鄉民們有沒有發現兩件事:

  • Inline Class和Extract Class互為反運算,一個要求合併類別,另一個要求抽取類別(把某個類別的程式碼搬到一個新類別)。
  • 有時候到底是要套用Inline Class還是Extract Calss界線並不是那麼明確。拿Person和TelephoneNumber例子來看,如果Person本身已經做了很多事,把Person和TelephoneNumber拆分成兩個類別也沒有特別不好。反之,如果Person閒閒沒事幹,而TelephoneNumber也閒閒沒事幹,合併在一起也許比較簡單。

***

友藏內心獨白:分分合合。

沒有留言:

張貼留言