&g
劃分職責:根據方法實現的邏輯來安排方法所在的類。
舉例理解:這個重構的方法是對單一職責原則(srp)的貫徹,在coding的時候,我們不僅僅需要把方法中的邏輯單一化(主要使用 extract method),還要把類中的方法安置合理化。比如說有個book()的類,那麼對於book的一些操作,如增加減少書,設定書的屬性那可以交給這個類做;而如另一些方法,如買書,租書就可以交給custom()的類來處理,因為買書,租書的邏輯主體都是custom。
專案例項:就個人而言,這個重構方法我覺得大家在coding的時候都會注意到,因為誰都會把相關的方法放在乙個類中;唯一可能出現的問題就是出現大神類(god class),也就是說這個類中集合了n多的方法,在專案中經常能看到這樣的類,乙個類中包含對string的處理,對cache的處理,對陣列的處理,總之是所有應用類的方法都塞在了乙個類中,這樣寫起來方便了,但是使用起來會順手麼?找乙個方法要找半天,並不適合維護。所以像這種情況我們何不把這些方法按照功能分開幾個類寫呢?
重構前
public注意,這裡custom類中沒有方法。class
book
public
void
rentbook(book book, customer customer)
public
decimal
calculatebalance(customer customer)
}public
class
customer
public
ilist
<
book
>
books
}
重構後
public如上,把rentbook和calculatebalance移到了customer類中,在這個示例中,這種重構似乎沒有多大的作用,畢竟仁者見仁智者見智,很多種重構有時候看來真的挺嘰歪的,並且有些重構對於程式效能的提高幫助並不大。但是,重構的目的,我個人看來,主要是培養我們的乙個coding習慣,寫出做可維護的,易擴充套件的程式是我們coder的責任。class
book
}public
class
customer
public
ilist
<
book
>
books
public
void
payfee(
decimal
fee)
public
decimal
calculatebalance(customer customer)
}
必會重構技巧(二) 使用多型替換條件
使用多型替換條件 指在進行型別檢查和執行某些型別操作時,最好將演算法封裝在類中,並且使用多型來對 中的呼叫進行抽象 舉例理解 看定義可能比較迷糊,其實說的簡單一點,對於使用分支語句並且分支條件是和型別檢查相關的程式段,如 if type typeof typea else if type typeo...
頁面重構css技巧
1.如何讓文字在容器內垂直居中?1 方法 為容器新增line height屬性,使得line height的值等於容器的height。2 html view plain copy print html head meta charset utf 8 title 無標題文件 title style t...
C 重構之五(移除引數重構)
移除引數重構 c remove parameters是一項重構操作,提供了一種將形參從方法 索引器或委託中移除的簡單方法。移除引數 會更改宣告 並在呼叫該成員的所有位置移除形參,從而反映新的宣告。要執行 刪除引數 操作,請首先將游標放在方法 索引器或委託上。當游標位於適當的位置時,若要呼叫 remo...