If statement 将if/else正文留空的约定

If statement 将if/else正文留空的约定,if-statement,coding-style,If Statement,Coding Style,免责声明 我不完全确定这是否是合适的SE,但我还是从这里开始 背景 我在前面阅读,并在中查看此代码段 就个人而言,我倾向于用一个返回语句将其重写如下 auto z = [&](){ static auto cache_x = x; static auto cache_y = y; static auto cache_result = x + y; if (x == cache_x && y == cache_y) { }

免责声明

我不完全确定这是否是合适的SE,但我还是从这里开始

背景

我在前面阅读,并在中查看此代码段

就个人而言,我倾向于用一个返回语句将其重写如下

auto z = [&](){ static auto cache_x = x; 
    static auto cache_y = y; 
    static auto cache_result = x + y;
    if (x == cache_x && y == cache_y)
    {
    }
    else
    {
        cache_x = x; 
        cache_y = y; 
        cache_result = x + y;
    }
    return cache_result;
};
但这为if部件留下了一个空白主体

我们可以把if/else改写成if!x==cache\u x&&y==cache\u y,但这会有被误解的风险,并且会变得混乱

我的问题

我们应该用什么样的方式来写这样的东西呢

有多个返回语句 将if的正文留空 将if条件重写为否定版本 别的 请注意,我通常用java编写代码,而示例代码是C++。我对一般公认的做事方式感兴趣,而不是针对特定的C++构造/方法。

我倾向于用一个返回语句重写它[…]

auto z = [&](){ static auto cache_x = x; 
    static auto cache_y = y; 
    static auto cache_result = x + y;
    if (x == cache_x && y == cache_y)
    {
    }
    else
    {
        cache_x = x; 
        cache_y = y; 
        cache_result = x + y;
    }
    return cache_result;
};
这也是我的偏好。通过反转分支的条件,可以更清楚地到达该位置:

自动z=[&]{ 静态自动缓存_x=x; 静态自动缓存_y=y; 静态自动缓存结果=x+y; 如果!x==cache\ux&&y==cache\uy{ cache_x=x; 缓存_y=y; 缓存_结果=x+y; } 返回缓存结果; };
一般来说,如果在这种情况下有分支逻辑,那么if。。。其他的如果有一个分支是空的,请尝试重写它,而不要使用那个空分支。

公平地说,我会把它张贴在那里,因为它是基于观点的。为了使它更简洁,最好在前一行声明一个布尔值,然后在if语句中使用该值的否定。@HassnainAli噢,这是一个很好的方法,真不敢相信我没有想到这个@mdfst13因此我说如果它是一个工作代码