【发布时间】:2019-09-12 19:51:13
【问题描述】:
我不确定是否应该在此处发布此内容,但我今天刚刚与一位同事就 C++ 良好实践进行了辩论,但我找不到我们在 CppCoreGuidelines 或任何论坛中讨论的要点。
我们谈论的是"if" "else if" "else" 声明,而我的同事说如果你有一个"if - else if" 声明,那么你必须输入一个"else",即使它是空的。 p>
例如,在他看来,这样的事情不是好的做法。
if (condition1)
{
// Some instructions to do when condition1
...
}
else if (condition2)
{
// Some instructions to do when condition2
...
}
我宁愿写这段代码:
if (condition1)
{
// Some instructions to do when condition1
...
}
else if (condition2)
{
// Some instructions to do when condition2
...
}
else
{
/* Do nothing */
}
他的主要观点是,就像switch 语句必须有一个default 一样,if - else if 语句必须有一个else。
我有几个问题:
- 这是真的吗?
- 如果是,为什么? (我不明白这个问题)。
- 为什么有些指南要强制这样做?
【问题讨论】:
-
“这是真的吗?” - 不,不是。开关也不是这样。
-
else{ /* Do nothing */ }被浪费了。你不会有 else 语句什么都不做。 -
见仁见智。这当然不是必需的。但是您可能会争辩说,它明确表明您不打算在最终的
else案例中发生任何事情。它消除了它的缺席是由于遗漏而引起的担忧。我觉得这不值得,但我明白为什么有人会想要推动它。 -
这是一个基于意见的问题。简而言之,编译器会优化掉空的else。这只是您是否喜欢在代码中使用空的 else 块的问题,这只是您自己的想法。
-
附带说明,如果您打开枚举而不给出每个可能值的大小写,某些环境会发出警告。如果您提供可能需要也可能不需要的默认值,您将不会收到该警告。
标签: c++