是否使用大括号进行其他范围界定?[已关闭]

2022-09-01 01:12:24

我的意思是,除了在函数,类需要时使用它之外,如果,同时,切换,尝试捕获。

我不知道它可以像这样完成,直到我看到这个SO问题

在上面的链接中,Eli提到“他们用它来折叠他们的代码,这些逻辑部分不会落入通常折叠起来的函数,类,循环等。

除了上面提到的那些,还有什么其他的用途?

使用大括号来限制变量的范围并仅在需要时扩展范围(在“需要访问”的基础上工作)是否是一个好主意?还是真的很傻?

使用作用域只是为了在不同的作用域中,但在相同的较大作用域中使用相同的变量名称,怎么样?或者重用相同的变量(如果你想使用相同的变量名称)并节省释放和分配(我认为一些编译器可以对此进行优化?)是一种更好的做法?还是完全使用不同的变量名称更好?


答案 1

如果我使用的资源,我想在特定时间释放,我会这样做,例如:

void myfunction()
{
  {
  // Open serial port
     SerialPort port("COM1", 9600);
     port.doTransfer(data);
  } // Serial port gets closed here.

  for(int i = 0; i < data.size(); i++)
     doProcessData(data[i]);
  etc...
}

答案 2

出于几个原因,我不会为此目的使用大括号。

  1. 如果你的特定函数足够大,你需要做各种范围界定技巧,也许可以将函数分解成更小的子函数。

  2. 引入用于范围划分的大括号以重用变量名称只会导致代码中的混乱和麻烦。

只是我的2美分,但我在其他最佳实践材料中看到了很多这类东西。