我在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;
}
答案 0 :(得分:27)
简短回答:没关系。
答案 1 :(得分:10)
只是给出一个稍微详细的答案......
官方C99规范说明了以下关于break语句的内容:
break语句终止执行最小的封闭开关或迭代语句。
所以真的没关系。至于我,我把断裂放在花括号内。既然你也可以在花括号内的其他地方休息,那么在大括号内也有结束断点更合乎逻辑。有点像退货声明。
答案 2 :(得分:5)
如何组合花括号和开关有很多不同的编码风格。我将在示例中使用我更喜欢的那个。无论位置如何,break
语句都会突破最内层的循环或switch语句。例如,您可以为单个案例设置多个中断:
switch (foo) {
case 1:
{
if (bar)
break;
bar = 1;
...
}
break;
}
请注意,您也可以将案例放在任何地方,但 在某种程度上被视为不良做法。案例标签非常类似于转到标签。碰巧我写了这样的东西:
switch (foo) {
case 1:
bar = 1;
if (0) {
case 2:
bar = 2;
}
...
break;
}
但要小心使用。
答案 3 :(得分:1)
你可能不希望首先使用curlies,除非你需要它们用于词法范围。第一个例子对我来说看起来更好,但我认为真正的答案是这是一个品味问题。
答案 4 :(得分:0)
如上所述,这只是个人风格的问题,但我总是把断言放在大括号之外:在闭幕式之前把断点放在我看来跳出一个复合语句,从而略微增加了意大利面条的代码感觉