If statement 将if/else正文留空的约定
免责声明 我不完全确定这是否是合适的SE,但我还是从这里开始 背景 我在前面阅读,并在中查看此代码段 就个人而言,我倾向于用一个返回语句将其重写如下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) { }
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因此我说如果它是一个工作代码