相关疑难解决方法(0)

C++中不必要的花括号?

今天为同事做代码审查时,我看到了一件奇怪的事情.他用这样的花括号包围了他的新代码:

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看起来相当奇怪,我不认为花括号应该在我们的代码中.我在所有答案中都看到了一些很好的例子,说明为什么用花括号包围代码,但是你不应该把代码分成方法吗?

c++ code-formatting

175
推荐指数
12
解决办法
3万
查看次数

Java中的花括号是什么意思?

我有一些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声明之后,那些独立的花括号是什么意思?

java syntax scope curly-braces

76
推荐指数
4
解决办法
4万
查看次数

在C#中浮动花括号

今天我遇到了一段我从未见过的C#代码.程序员仅使用花括号定义了一个代码块(没有if,class,function等).

{
    int i = 0;
}
i++; //compile error
Run Code Online (Sandbox Code Playgroud)

除了使代码看起来更有条理之外,还有其他目的吗?使用这种"浮动"环境是好事,坏事还是其他任何做法?

c#

9
推荐指数
1
解决办法
4470
查看次数

你什么时候使用代码块?

什么时候在C/C++/C#等中使用代码块?我知道它们背后的理论原因,但你什么时候在实际程序中使用它们?

编辑:我刚刚意识到我在switch语句中使用它们,否则变量将在相同的范围内(对于类似的东西i):

switch (x) { case "abc": { /* code */ } break; }
Run Code Online (Sandbox Code Playgroud)

等等(只是为了澄清,在switch语句中,额外的括号不是必需的.)


有关:

.net c# coding-style codeblocks curly-braces

4
推荐指数
1
解决办法
5417
查看次数

使用花括号只是一块代码有什么好处(不使用for,if,try等)?

可能重复:
你是否使用花括号进行额外的范围设定?
在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)

......但事实并非如此.

您有什么好处,功能或用途,为什么要这样做?

c#

2
推荐指数
1
解决办法
1260
查看次数