我正在处理数据,有许多案件需要处理。选择正确的案例涉及一些复杂性,一旦找到正确的案例,处理也是如此。
我可以通过两种不同的方式解决问题:
(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
}
我的问题是:是否存在适用于这种情况的标准做法?