c ++ if语句返回块外

时间:2018-03-30 13:08:22

标签: c++

很抱歉,如果这是一个重复的帖子,因为我甚至不知道用于搜索它的正确字词。

我可以看到一些看起来像这样的c ++代码:

void start()
{
  if (call(initialize())) return;
  {
    // the rest of the code runs here
  }
  terminate();
}

我是否遗漏了某些内容,或者是否只是讨厌那些必须阅读此代码的其他人的代码混淆?

1 个答案:

答案 0 :(得分:3)

  

我错过了什么

不是,不。

  

对于那些讨厌必须阅读此代码的其他人来说,这只是代码混淆吗?

那,或者是一个错误(例如,丢失else,或者return;不应该存在)。

如果块中的代码确实需要在一个块中(这当然不是不可能的 - 这是控制范围的常用方法),那么它至少应该是一个空白链接以明确它与if语句无关。

代码可能更好地编写如下:

void start()
{
   if (call(initialize()))
      return;

   {
      // stuff in a block
   }

   terminate();
}

即使在这里,我几乎肯定会在块范围内包含一个适当的注释,以解释为什么它是必要的(如果不是不言自明的),并反过来隐含地重新确认它不是if / else链的某些意外错误格式化。