Summary: 你有一系列條件測試,都將獲得相同結果。將這些測試合併爲一個條件表達式,並將這個條件表達式提煉成爲一個獨立函數。函數
動機: 測試
有時你會發現這樣一串條件檢查:檢查條件各不相同,最終行爲卻一致。若是發現這種狀況,就應該使用「邏輯或」和「邏輯與」將他們合併爲一個條件表達式。spa
之因此要合併條件代碼,有兩個重要緣由。首先,合併後的條件代碼會告訴你「實際上只有一次條件檢查,只不過有多個並列條件須要檢查而已」,從而使這一次檢查的用意更清晰。固然,合併前和合並後的代碼有着相同的效果,但原先代碼傳達出的信息倒是「這裏有一些各自獨立的條件測試,它們只是剛好同時發生」。其次,這項重構每每能夠爲你使用Extract Method作好準備。將檢查條件提煉成一個獨立函數對於理清代碼意義很是有用,由於它把描述「作什麼」的語句換成了「爲何這樣作」。編譯
條件語句的合併理由也同時指出了不要合併的理由:若是你認爲這些檢查的確彼此獨立,的確不該該被視爲同一次檢查,那麼就不要使用本項重構。由於在這種狀況下,你的代碼已經清楚表達出本身的意義。重構
作法:im
1.肯定這些條件語句都沒有反作用img
à若是條件表達式有反作用,你就不能使用本項重構di
2.使用適當的邏輯操做符,將一系列相關條件表達式合併爲一個。
3.編譯,測試。
4.對合並後的條件表達式實施Extract Method。