在开关箱中使用花括号时,'break'声明

我在C / Objective-C / C ++中使用大括号括住了所有的switch case语句

直到不久之前,我还没有考虑是否包括break; 大括号内的说法是好的或不好的做法。 我怀疑这没关系,但我认为这仍然值得一提。

  switch (foo) { case 1: { // stuff break; } default: { break; } } 

VS

  switch (foo) { case 1: { // stuff } break; default: { // stuff } break; } 

简短的回答:没关系。

只是给一个稍微更详细的答案…

官方的C99规格说明了以下关于break语句:

break语句终止最小封闭开关或迭代语句的执行。

所以这真的没关系。 就我而言,我把这个破口放在花括号里面。 既然你也可以在花括号内的其他地方rest一下,那么在花括号里面也有一个结尾rest是比较合乎逻辑的。 有点像return语句。

如何将大括号和开关结合在一起,有许多不同的编码风格。 我将在示例中使用我喜欢的那个。 break语句打破了最内层的循环或switch语句,不pipe位置如何。 你可以例如有一个单一的情况下多个rest时间:

 switch (foo) { case 1: { if (bar) break; bar = 1; ... } break; } 

请注意,你也可以把案件放在任何地方,虽然这认为是不好的做法。 案例标签非常像goto标签。 发生了这样的事情:

 switch (foo) { case 1: bar = 1; if (0) { case 2: bar = 2; } ... break; } 

但小心使用它。

除非你需要他们的词汇范围,否则你可能不希望卷首。 第一个例子看起来对我更好,但我想真正的答案是,这是一个品味的问题。

清楚地表明,这只是一个个人风格的问题,但是我总是把这个断言陈述放在大括号之外:在大括号之前放置断点似乎是跳出一个复合语句,从而略微增加了意大利面代码的感觉。