今天为同事做代码审查时,我看到了一件奇怪的事情.他用这样的花括号包围了他的新代码:
Constructor::Constructor()
{
existing code
{
New code: do some new fancy stuff here
}
existing code
}
Run Code Online (Sandbox Code Playgroud)
如果有的话,结果是什么?这可能是什么原因?这种习惯来自哪里?
编辑:
根据输入和下面的一些问题,我觉得我必须在问题上添加一些,即使我已经标记了答案.
环境是嵌入式设备.C++服装中包含许多遗留的C代码.有很多C转向C++开发人员.
这部分代码中没有关键部分.我只在代码的这一部分中看到过它.没有完成主要的内存分配,只是设置了一些标志,而且有点笨拙.
大括号包围的代码类似于:
{
bool isInit;
(void)isStillInInitMode(&isInit);
if (isInit) {
return isInit;
}
}
Run Code Online (Sandbox Code Playgroud)
(不要介意代码,只需坚持花括号......;))花括号之后还有一些比特麻烦,状态检查和基本信号.
我与那个人谈过,他的动机是限制变量的范围,命名冲突,以及其他一些我无法真正接受的冲突.
从我的POV看起来相当奇怪,我不认为花括号应该在我们的代码中.我在所有答案中都看到了一些很好的例子,说明为什么用花括号包围代码,但是你不应该把代码分成方法吗?
我有一些Java代码以两种方式使用花括号
// Curly braces attached to an 'if' statement:
if(node.getId() != null)
{
node.getId().apply(this);
}
// Curly braces by themselves:
{
List<PExp> copy = new ArrayList<PExp>(node.getArgs());
for(PExp e : copy)
{
e.apply(this);
}
}
outAMethodExp(node);
Run Code Online (Sandbox Code Playgroud)
在第一个if声明之后,那些独立的花括号是什么意思?
今天我遇到了一段我从未见过的C#代码.程序员仅使用花括号定义了一个代码块(没有if,class,function等).
{
int i = 0;
}
i++; //compile error
Run Code Online (Sandbox Code Playgroud)
除了使代码看起来更有条理之外,还有其他目的吗?使用这种"浮动"环境是好事,坏事还是其他任何做法?
什么时候在C/C++/C#等中使用代码块?我知道它们背后的理论原因,但你什么时候在实际程序中使用它们?
编辑:我刚刚意识到我在switch语句中使用它们,否则变量将在相同的范围内(对于类似的东西i):
switch (x) { case "abc": { /* code */ } break; }
Run Code Online (Sandbox Code Playgroud)
等等(只是为了澄清,在switch语句中,额外的括号不是必需的.)
有关:
可能重复:
你是否使用花括号进行额外的范围设定?
在C#中浮动花括号
我偶然发现了C#中的以下内容:
if(condition) return true;
{
// perform this if true
}
Run Code Online (Sandbox Code Playgroud)
在调查时,我意识到你可以简单地将花括号应用于代码块,这让我觉得它类似于'范围'代码:
{
string foo = "foo";
}
string foo = "new foo!";
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此.
您有什么好处,功能或用途,为什么要这样做?