l

2016年2月18日 星期四

用Collapse Hierarchy移除Lazy Class怪味道

Feb. 06 16:15~17:00

螢幕截圖 2016-02-06 17.10.27

▲Lazy Cat

 

Lazy Class怪味道在〈談談壞味道(7):Lazy Class & Speculative Generality〉介紹過,今天說明如何用Collapse Hierarchy移除這個怪味道。中文版的《Refactoring》將Collapse Hierarchy翻譯為摺疊繼承體系,顧名思義就是把Lazy Class怪味道所造成的不當繼承關係改成不要使用繼承。

▼看個程式範例,你設計Author類別來代表書的作者。

螢幕截圖 2016-02-06 16.35.42

 

▼後來你發現作者可以分為專業作者與業餘作者,因此你設計了AmateurAuthor類別用來代表業餘作者,並讓它繼承原來的Author類別。

螢幕截圖 2016-02-06 16.39.38

***

AmaterurAuthor除了多了一個_primaryJotTitle(主要工作抬頭)以外,並沒有有分擔多少特別責任,算是一種Lazy Class(冗員類別),可以套用Collapse Hierarchy移除這個怪味道。移除方法很簡單,就好像兩間公司合併一樣,先決定誰要成為「存續公司」,誰要成為「消滅公司」,然後把「消滅公司」的人馬移到「存續公司」即可。

在這裡我們決定保留Author消滅AmaterurAuthor,重構後結果如下:

螢幕截圖 2016-02-06 17.01.29

***

友藏內心獨白:消滅肥貓。

沒有留言:

張貼留言