在开关箱中使用花括号时,'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; } 

5 Solutions collect form web for “在开关箱中使用花括号时,'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; } 

但小心使用它。

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

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

  • PHP短标签可以接受使用吗?
  • 检查一个string是否包含列表中的元素(string)
  • Python“私有”函数编码约定
  • 使用隐式types局部variables
  • 命名约定:什么命名布尔variables?
  • 在JavaScript中将数字转换为string的最佳方法是什么?
  • find包含未使用的标题的工具?
  • 在“if”语句中devise多行条件?
  • 如何解决TR的高度?
  • 在对象和数组初始值设定项的Resharper中获取正确的缩进
  • std :: for_each over for循环的优点