C++代碼重構(gòu)案例分析 難懂的邏輯表達(dá)式
????有這樣一個(gè)例子:? ??

? ? 看起來是比較簡單的, 但是主要代碼嵌套了兩層, 而且大括號(hào)后面沒有代碼了, 那么這兩個(gè)大括號(hào)就顯得很多余. if語句的條件部分還算簡單, 但是由于后面部分有兩個(gè)表達(dá)式, 所以理解起來會(huì)有一點(diǎn)費(fèi)勁, 看起來也有點(diǎn)別扭. 因此, 這個(gè)代碼需要重構(gòu)成更直觀易懂的代碼.
? ? 前文說過可以用串行if 或 條件取反的方式重構(gòu)這樣的代碼. 如果將 || 拆成兩個(gè)串行if語句的話, 是這樣的:

????這樣理解起來會(huì)好一些, 但是多了很多大括號(hào), 嵌套層次沒變, 代碼更多更亂了.
????對(duì)條件取反是重構(gòu)這樣的代碼的正解:

????或是這樣:

? ????重構(gòu)后的代碼可以很清晰的看到什么時(shí)候才會(huì)執(zhí)行主要代碼, 而且去掉了全部的大括號(hào), 所有代碼都是處于同一縮進(jìn)級(jí)別的(看起來很整齊). 唯一的缺點(diǎn)是x1和y1的值可能需要判斷2次, 不過這種代價(jià)相比于獲得的代碼體驗(yàn)顯然是不值一提的.
標(biāo)簽: