Feb. 06 17:20~18:03
▲Inline Cat
某個具備Lazy Class怪味道的類別如果和其它類別存在繼承關係,可以用昨天介紹的〈用Collapse Hierarchy移除Lazy Class怪味道〉來處理。如果存在聚合(aggregation) 關係,則可以用今天介紹的Inline Class重構來處裡。
▼以下例子節錄自《Refactoring》。你有一個Person類別,它包含了一個用來記錄電話號碼的TelephoneNumber類別。
***
▼你覺得TelephoneNumber類別沒做什麼事,不需要單獨存在,於是套用Inline Class把它跟Person類別合併。
***
看到這裡不知道鄉民們有沒有發現兩件事:
- Inline Class和Extract Class互為反運算,一個要求合併類別,另一個要求抽取類別(把某個類別的程式碼搬到一個新類別)。
- 有時候到底是要套用Inline Class還是Extract Calss界線並不是那麼明確。拿Person和TelephoneNumber例子來看,如果Person本身已經做了很多事,把Person和TelephoneNumber拆分成兩個類別也沒有特別不好。反之,如果Person閒閒沒事幹,而TelephoneNumber也閒閒沒事幹,合併在一起也許比較簡單。
***
友藏內心獨白:分分合合。
沒有留言:
張貼留言