gpt4 book ai didi

c++ - 在 "if"语句中初始化变量

转载 作者:IT老高 更新时间:2023-10-28 12:03:39 28 4
gpt4 key购买 nike

我读到在 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) {
// ...
}

短期变量更好有几个原因。但举几个例子:

  1. 生命越短,在阅读不相关的代码行时需要记住的事情就越少。如果 i 在循环或 if 语句之外不存在,那么我们不需要在意它在它们之外的值。我们也不必担心它的值会与超出其预期范围的程序的其他部分交互(如果上面的 i 在另一个循环中重用,可能会发生这种情况)。它使代码更易于理解和推理。

  2. 如果变量持有资源,则该资源现在持有的时间可能最短。这没有多余的花括号。还明确了资源与 if 单独相关。将此视为一个激励示例

    if(std::lock_guard _(mtx); guarded_thing.is_ready()) {
    }

如果您的同事不了解该功能,请教他们!安抚不想学习的程序员是回避功能的糟糕借口。

关于c++ - 在 "if"语句中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866458/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com