在函数开始时测试并返回,而不是嵌套的 if

Test and return at the start of a function vs nested if

本文关键字:嵌套 if 开始时 函数 测试 返回      更新时间:2023-10-16

以下两段代码具有完全相同的行为,并且每段代码都有自己的优点:单回波与嵌套深度。

选项B的中间可以放在一个函数中以删除嵌套。

选项 A.

void func(A * a, B * b)
{
  if (a == NULL) { return; }
  if (b == NULL) { return; }
  // Do some stuff
}

或选项 B。

void func(A * a, B * b)
{
  if (a != NULL) 
  { 
    if (b != NULL) 
    { 
       // Do some stuff
    }
  }
}

我想一致性可能是最重要的。我是否缺少什么,可以使一种选择比另一种选择具有实质性的好处?

谢谢

没有客观的技术杀手锏论据可以使一个选项优于另一个选项,因此它实际上归结为意见。您喜欢低压痕还是喜欢单回程?

在某些情况下,可能一个版本会禁止编译器的 RVO。但仅此而已。

在选项 A 中,如果两个中的任何一个在单个 if(...) 中为空,您可以只检查:

void func(A * a, B * b)
{
  if (a == NULL || b == NULL) { return; }
  // Do some stuff
}