【发布时间】:2012-03-31 00:53:51
【问题描述】:
今天在为同事进行代码审查时,我看到了一件奇怪的事情。他用这样的花括号括住了他的新代码:
Constructor::Constructor()
{
existing code
{
New code: do some new fancy stuff here
}
existing code
}
如果有的话,结果是什么?这样做的原因可能是什么?这种习惯从何而来?
编辑:
根据下面的输入和一些问题,我觉得我必须在问题中添加一些内容,即使我已经标记了答案。
环境是嵌入式设备。有很多遗留的 C 代码包裹在 C++ 服装中。有很多 C 转为 C++ 的开发人员。
这部分代码没有关键部分。我只在这部分代码中看到过。没有完成主要的内存分配,只是设置了一些标志,并进行了一些操作。
花括号括起来的代码是这样的:
{
bool isInit;
(void)isStillInInitMode(&isInit);
if (isInit) {
return isInit;
}
}
(不要介意代码,只要坚持花括号...;)) 在花括号之后还有一些更多的小玩意、状态检查和基本信号。
我和那个人谈过,他的动机是限制变量的范围、命名冲突以及其他一些我无法真正理解的东西。
从我的观点来看,这似乎很奇怪,我认为花括号不应该出现在我们的代码中。我在所有答案中都看到了一些很好的例子,说明为什么可以用花括号括起代码,但你不应该将代码分成方法吗?
【问题讨论】:
-
当你问他为什么这样做时,你的同事的回答是什么?
-
在 RAII 模式中很常见。快速概览:c2.com/cgi/wiki?ResourceAcquisitionIsInitialization
-
我讨厌不必要的花括号
-
内部块中是否有任何声明?
-
也许他只是想在编辑器中轻松地“折叠”掉那个新部分
标签: c++ code-formatting