读书笔记之何时重构(下)
因為中間看了一本其他的書,差不多一個月未跟新讀書筆記了,這段時間要補補課,接著上一章繼續說說何時重構,文章中很多重構的方法這里還沒有說明,后續章節會詳細的介紹這些經常使用到的重構方法,盡請期待:
11、平行繼承體系(Parallel):每當你為某個類增加一個子類的時候也必須為另一個類增加一個子類。如果你發現某個繼承體系的名稱前綴和另一個繼承體系的名稱前綴完全相同的時候就是需要重構的地方了。
12、冗贅類(Lazy Class):你創建的沒一個類都得有人去理解它、維護它,這些工作都是要花錢的。如果一個類的所得不值其自身價值那么它就應該消失。
13、夸夸其他未來性(Speculative Generality):如果所有裝置都會被用到,那就值得做;如果用不到,就不值得。它們只會擋你的路,所以,把它搬開吧。
14、令人迷惑的暫時值域(Temporary Field):有時你會看到這樣的對象:其內某個instance變量僅為某種特定情勢而設。這樣的代碼讓人不易理解,因為你通常認為對象在所有時候都需要它的所有變量。你應該提煉類,然后把所有和這個變量相關的代碼都放進這個新家。
15、過度耦合的消息鏈(Message Chains):用戶向一個對象索求(request)另一個對象,然后再向后者索求另一個對象,然后再索求另一個對象……這就是消息鏈(Message Chains)。實際代碼中你看到的可能是一長串getThis()或一長串臨時變量。采取這種方式,將會導致緊密的耦合性,一旦對象間的關系發生任何變化,客戶端就不得不作出相應修改。可以使用Hide Delegate方法進行重構,后續會講解如何使用。
16、中間轉手人(Middle Man):如果一個類接口有一半的函數都委托給其他的類,這樣就是過度運用委托,這個時候你應該直接移除中間類,直接和實責對象打交道。
17、狎昵關系(Inappropriate Intimacy):有時你會看到兩個類過于親密,花費太多時間去探究彼此的私有成分。你可以采用 Move Method 和 Move Field 幫它們劃清界線,從而減少狎昵行徑。你也可以看看是否運用 Change Bidirectional Association to Unidirectional 讓其中一個class對另一個斬斷情絲。如果兩個實在是情投意合,可以運用Extract Class 把兩者共同點提煉到一個安全地點,讓它們坦蕩地使用這個新class。或者也可以嘗試運用 Hide Delegate 讓另一個class來為它們傳遞相思情。
18、異曲同工的類(Alternative Classes with Different Interfaces):兩個函數做同一件事,確有著不同的簽名式,請運用重命名的方式,按照它們的用途重新命名,并反復運用移動函數的方法將某些行為移入類中,直到其協議一致。
19、不完美的程序類庫(Incomplete Library Class):許多程序都建立在封裝好的類庫上,有些類庫并不是那么完美,如果你想要修改它們可以運用Introduce Foreign Method和Introduce Local Extension。
20、數據類(Data Class):數據類中不應有Public值域,如果含有容器類值域(Collection Fields),你應該檢查它們是否得到了恰當的封裝,對于不該被其他類修改的值域,請取消Setting方法。
21、被拒絕的遺贈(Refused Bequest):有時候繼承一個類的子類并不需要使用全部父類的方法,大部分方法甚至與子類并無任何關系這時候你需要用委托的方式來代替繼承(Replace Inheritance with Delegation)。
22、過多的注釋(Comments):有時候因為代碼很糟糕才寫了長長的注釋,這個時候嘗試重構代碼消除長長的注釋。
已有 0 人發表留言,猛擊->>這里<<-參與討論
ITeye推薦
- —軟件人才免語言低擔保 赴美帶薪讀研!—
轉載于:https://www.cnblogs.com/TCrow/archive/2012/05/21/2868254.html
總結
以上是生活随笔為你收集整理的读书笔记之何时重构(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7域内桌面黑屏
- 下一篇: 挂“洋头”卖奶粉,澳优还要欺骗好久