我有一个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