重構:改善既有程式碼的設計 第七章 讀書筆記
阿新 • • 發佈:2022-11-30
第7章 封裝
7.1 封裝記錄(Encapsulate Record)
曾用名:以資料類取代記錄;
做法:1- 對持有記錄的變數使用封裝變數,將其封裝到一個函式中。 記得為這個函式取一個容易搜尋的名字。
2- 建立一個類,將記錄包裝起來,並將記錄變數的值替換為該類的一個例項。然 後在類上定義一個訪問函式,用於返回原始的記錄。修改封裝變數的函式,令 其使用這個訪問函式。
7.2 封裝集合(Encapsulate Collection)
動機:集合的成員變數可以直接被修改,而封裝它的類則全然不知,無法介入。
為避免此種情況,我會在類上提供一些修改集合的方法——通常是“添 加”和“移除”方法。這樣就可使對集合的修改必須經過類,當程式演化變大時, 我依然能輕易找出修改點。
7.3 以物件取代基本型別(Replace Primitive with Object)
7.4 以查詢取代臨時變數(Replace Temp with Query)
7.5 提煉類(Extract Class)
7.6 內聯類(Inline Class)
和提煉類相反的操作
7.7 隱藏委託關係(Hide Delegate)
代理操作,還是直接引用
7.8 移除中間人(Remove Middle Man)
和隱藏委託關係是相反的操作
7.9 替換演算法(Substitute Algorithm)
使用演算法簡化程式碼