这是我的代码示例:
void MyFunc()
{
if(funcA(varA) == 0)
{
if(funcB(varB) == 0)
{
if(funcC(varC) == 0)
{
//Success funcC
}
else
{
//error with funcC
}
}
else
{
//error with funcB
}
}
else
{
//error with funcA
}
}
Run Code Online (Sandbox Code Playgroud)
所以代码就像是,如果funcA()只返回零,则执行funcB(),如果funcB()仅返回零,则执行funcC(),依此类推.我的问题是如何if...else用其他优化方法替换嵌套语句?
为了防止一堆范围,如果嵌套,你可以快速失败:
if(funcA(varA)) // if funcA returns 0, only then proceed
return;
if(funcB(varB))
return;
if(funcC(varC))
return;
Run Code Online (Sandbox Code Playgroud)
if如果要打印一些错误,可以展开s:
if(funcA(varA))
{
//error..
return;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要此类信息,请使用短路单行,这仅funcB在funcA返回0等时运行:
!funcA(varA) && !funcB(varB) && !funcC(varC);
Run Code Online (Sandbox Code Playgroud)