討論完了命名,接下來是「邏輯條件式的誤用」。條件的誤用還要比錯誤的命名還要花時間,因為錯誤的命名只是「障礙物」,搬開即可。而條件的誤用卻是「崎嶇彎延的山路」,大幅拖慢你進行開發的時間,你卻很難抄什麼捷徑。
命名錯誤只要批次訂正個名字,「尋找 / 取代」大法就可以解決。可是錯誤的邏輯,可能要倒進大腦轉個幾遍,才能明白到底出什麼問題。
常見的邏輯條件式的誤用大概有兩大類型:
濫用 elsif
雖然 Ruby 提供了 elsif 去處理 if / else 外其他的情形。
但在專案中,elsif 很常被邏輯不是那麼好的開發者濫用。一般來說,只要看到 elsif 出現,就要開始當心程式碼已開會不會開始出現 bad smell。而若看到一段程式碼內中出現了三個以上的 elsif,十成十的機率這一段 code 需要被重寫。
邏輯混亂
1 2 3 4 5 6 7 8 9 | |
通常我們會尋找獨立邏輯,以將之獨立抽開的模式進行重構。
容易理解
把不一致的條件抽出成單獨的 statment,其餘部分使用 case when 改寫。
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
類似的 method,變數與寫法不一致
#TODO
Exercises
#TODO