gpt4 book ai didi

java - 可折叠的 If 语句

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:49 25 4
gpt4 key购买 nike

我最近使用 PMD(嵌入在 hudson 中)偶然发现了以下警告,我的代码似乎受到了 CollapsibleIfStatements 的影响,我对此并不完全理解。代码看起来像这样

// list to be filled with unique Somethingness
List list = new ArrayList();

// fill list
for (SomeObject obj : getSomeObjects()) { // interating
if (!obj.getSomething().isEmpty()) { // check if "Something" is empty *
if (!list.contains(obj.getSomething())) { // check if "Something" is already in my list **
list.add(obj.getSomething()); // add "Something" to my list
}
}
}

在我看来,这段代码并不更“可折叠”(否则对于下一个阅读代码的人来说,它会更加不可读)。另一方面,我想解决此警告(无需停用 PMD ;)。

最佳答案

一种可能性是分解出重复的 obj.getSomething() 然后折叠嵌套的 if 语句:

for (SomeObject obj : getSomeObjects()) {
Something smth = obj.getSomething();
if (!smth.isEmpty() && !list.contains(smth)) {
list.add(smth);
}
}

在我看来,结果非常可读,应该不会再触发 PMD 警告。

另一种方法是用 Set 替换 List,并完全避免显式 contains() 检查。使用 Set 也会有更好的计算复杂度。

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

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