gpt4 book ai didi

Java 可折叠 if 语句

转载 作者:行者123 更新时间:2023-11-30 05:56:00 25 4
gpt4 key购买 nike

我使用 PMD检查我的代码。在大多数情况下,它给了我非常有用的提示,但我无法弄清楚在以下情况下可以改进什么。

原始代码如下所示:

if ((getSomething() != null && getSomethingElse() != null)
|| (getSomething() == null && getSomethingElse() == null))
{
...
}

PMD 告诉我:

Sometimes two 'if' statements can be consolidated by separating their conditions with a boolean short-circuit operator.

为简单起见,我们只使用 a 和 b 作为 boolean 变量。那么这段代码看起来是这样的:

if ((!a && !b) || (a && b))

这可以转换为以下之一:

if ((!a || b) && (a || !b))
if (!(a^b))

最后

if (a==b)

所以我简化了我的代码

if ((getSomething() == null) == (getSomethingElse() == null))

但是,PMD 一直在提示(实际上是关于所有三个版本)。这是误报还是有更好的方法来编写 if 条件?

最佳答案

问题有所不同。 if 语句是另一个 if 中的唯一代码(代码来自验证方法):

if (...)
{
...
}
else if (...)
{
...
}
else if (...)
{
if ((getSomething() == null) == (getSomethingElse() == null))
{
...
}
}

PMD 消息的意思是,我可以结合最后一个 else-if 和内部 if-子句的条件:

if (...)
{
...
}
else if (...)
{
...
}
else if (... && ((getSomething() == null) == (getSomethingElse() == null)))
{
...
}

但是,我不确定我是否会这样做,因为原始版本似乎更容易理解。

关于Java 可折叠 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583136/

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