编码样式 - 输入验证

Nav*_*een 2 c++ coding-style

哪个是验证传递给函数的输入的最佳方法,即在继续执行某些操作之前验证所有输入

class A;
void fun(A* p)
{
  if(! p)
  {
    return;
  }

 B* pB = p->getB();
  if(! pB)
  {
    return;
  }

.......

}
Run Code Online (Sandbox Code Playgroud)

或者你这样写:

void fun(A* p)
{
  if(p)
  {
    B* pB = p->getB();
    if(pB)
    {
      .....
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我问这个是因为,如果我使用第一种风格,那么我的代码中会有多个返回语句,很多人说这些语句很糟糕(不知道为什么),如果我使用第二种风格则会有太多级别嵌套在我的代码中.

Mar*_*las 7

第一种方式比第二种方式更容易阅读,更简单(深度).在第二个中,随着参数数量的增加,复杂性和深度增加.但在第一个例子中,它只是线性的.