2

可能重复:
这些 PMD 规则的原因是什么?

为什么我会收到 DD/DU 警告?

这是我的代码:

// DD warning from PMD
public Object foo() {
  Object result = null;
  if (condition) {
    // code block, no accec to result
    result = newResult;
  }
  return result;
}
// DU warning from PMD
List<Object> data = new ArrayList<Object>(anotherList);
anotherList.remove(1);
// some other modification of anotherList
if (condition) {
  // some code. no access to data
  for (Object o : data) {
    // loop for original content of the list
  }
}

这里有什么问题吗?或者它是一个PMD错误?我可以忽略这些警告吗?

4

1 回答 1

4

您的 DD 异常确实可以写得更好,错误的机会更少:

return condition? newResult : null;

或者,如果您对语法比较保守,

if (condition)
  return newResult;
return null;

在第二个示例中,您将data无条件地创建,但只能有条件地使用它。重写为

if (condition) {
  List<Object> data = new ArrayList<>(anotherList);
  // or maybe just use anotherList without copying
  ...
}
else {
  anotherList.remove(1);
  // some other modifications of anotherList
}
于 2013-01-18T09:51:00.077 回答