【发布时间】:2017-03-09 12:48:25
【问题描述】:
我正在处理数据,有许多案例需要处理。选择正确的案例涉及一些复杂性,一旦找到正确的案例,处理也是如此。
我可以用两种不同的方式来解决这个问题:
- (A) 方法选择正确的进程并调用它
- (B) 一个方法执行选择,将代码返回给另一个控制该过程的方法。
(A) 是我的第一个选择,但 (B) 的优点是可以将选择过程解耦,使其更清晰,并将其与处理分开。
在伪代码中:
====== option A ======
function doEverything(data) {
if (case1(data))
return doCase1(data)
else {
doStuff(data) // applies to all cases except case1
if (case2(data)) {
doStuff2()
return doCase2(data)
}
else if (case3(data)) {
return doCase3(data)
}
else return doDefaultCase(data)
}
return result
}
或者:
====== option B ======
function doChoice(data) {
if (case1(data)) return 1
doStuff(data) // applies to all except case1
if (case2(data)) return 2
if (case3(data)) return 3
return 4 // default
}
function doProcess(data) {
which = choice(data)
switch (which) {
case 1:
return doCase1(data)
break
case 2:
doStuff2()
return doCase2(data)
break
case 3:
return doCase3(data)
break
case 4:
return doDefaultCase(data)
default:
raise an error
}
我的问题是:有适用于这种情况的标准做法吗?
【问题讨论】:
标签: if-statement design-patterns optimization switch-statement