我有一個case
結構約50條件,其中每個案件具有不同的邏輯,不能合併在一起或重新使用。每增加一個新的案例,建築就會變得更大。目前需要約150行代碼。改善'案件' - '當'績效
case variable
when 'condition 1'
some complicated logic for condition 1
when 'condition 2'
some complicated logic for condition 2
...
when 'condition 50'
some complicated logic for condition 50
end
有無論如何重構此代碼嗎?我在想兩種方法:
- 我創建一個常量數組來存儲所有條件並創建一個循環來檢查
variable
。 (但我不能將邏輯應用於每種情況。) 我將每個條件的邏輯放入不同的方法中。 (但它仍然是混亂和分佈在許多行)。
case variable when 'condition 1' condition_1(arg) when 'condition 2' condition_2(arg) ... when 'condition 50' condition_50(arg) end def condition_1(arg) some complicated logic for condition 1 end def condition_2(arg) some complicated logic for condition 2 end ... def condition_50(arg) some complicated logic for condition 50 end
哪種方式更好?
看一看這樣的:https://refactoring.com/catalog/replaceConditionalWithPolymorphism.html – Niklas
感謝,有趣的,我不知道關於這些重構方法 – BraveVN