哪个是验证传递给函数的输入的最佳方法,即在继续执行某些操作之前验证所有输入
class A; void fun(A* p) { if(! p) { return; } B* pB = p->getB(); if(! pB) { return; } ....... }
或者你这样写:
void fun(A* p) { if(p) { B* pB = p->getB(); if(pB) { ..... } } }
我问这个是因为,如果我使用第一种风格,那么我的代码中会有多个返回语句,很多人说这些语句很糟糕(不知道为什么),如果我使用第二种风格则会有太多级别嵌套在我的代码中.
第一种方式比第二种方式更容易阅读,更简单(深度).在第二个中,随着参数数量的增加,复杂性和深度增加.但在第一个例子中,它只是线性的.