如何针对多个返回值优化代码?

Bis*_*iyo 2 c

这是我的代码示例:

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用其他优化方法替换嵌套语句?

Som*_*ken 6

为了防止一堆范围,如果嵌套,你可以快速失败:

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)

或者,如果您不需要此类信息,请使用短路单行,这仅funcBfuncA返回0等时运行:

!funcA(varA) && !funcB(varB) && !funcC(varC);
Run Code Online (Sandbox Code Playgroud)