我读到在 C++17 中我们可以像这样在 if
语句中初始化变量
if (int length = 2; length == 2)
//execute something
代替
int length = 2;
if (length == 2)
//do something
即使它更短,它也会影响代码的可读性(尤其是对于不了解此新功能的人),我认为这对于大型软件开发来说是一种糟糕的编码习惯。
除了缩短代码之外,使用此功能还有什么好处吗?
最佳答案
它将 length
的范围限制为 if
单独。所以当我们被允许写作时,你会得到同样的好处
for(int i = 0; i < ... ; ++i) {
// ...
}
而不是变量泄漏
int i;
for(i = 0; i < ... ; ++i) {
// ...
}
短期变量更好有几个原因。但举几个例子:
生命越短,在阅读不相关的代码行时需要记住的事情就越少。如果
i
在循环或if
语句之外不存在,那么我们不需要在意它在它们之外的值。我们也不必担心它的值会与超出其预期范围的程序的其他部分交互(如果上面的i
在另一个循环中重用,可能会发生这种情况)。它使代码更易于理解和推理。如果变量持有资源,则该资源现在持有的时间可能最短。这没有多余的花括号。还明确了资源与
if
单独相关。将此视为一个激励示例if(std::lock_guard _(mtx); guarded_thing.is_ready()) { }
如果您的同事不了解该功能,请教他们!安抚不想学习的程序员是回避功能的糟糕借口。
关于c++ - 在 "if"语句中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866458/