有几种方法,最简单的方法是简单地破坏一些函数并抽象出不同的层(如果你发现自己深入的话,无论如何都应该这样做。)
if ( /* Condition */ ) {
value = aFunctionSaysWhat();
} else {
// value = Error 1
}
....
value aFunctionSaysWhat(){
if ( /* Condition */ ) {
return aSecondFunctionHere();
} else {
// return Error 2
}
}
基本前提是,如果可能,函数应该存在于抽象层上,并且只做一件事。
下一个可能性是将其全部展平,这优于您最初的嵌套方法,但基本上具有相似的复杂性。如果您只有几个选项并且不打算添加更多选项,它可能比函数式方法更简洁。
if(ErrorCondition1){
//Error 1
}else if(ErrorCondition2){
//Error 2
}else if(ErrorCondition3){
//Error 3
}else{
//Superb
}
最后,您可以存储带有所需答案的哈希或映射并完全删除 if,实现此功能的能力取决于您对某些结果进行哈希处理的能力:
Results = {'Result1':'Error1', 'Result2':'Error2', 'Result3':'Error3', 'Success':'Superb'}
return Results[ConditionHash(Condition)];