有时我发现一些 PMD 规则相互冲突,因此您无法编写满足所有 PMD 规则的代码。
例如,以下两条规则似乎相互排斥:“将对象分配给 null 是一种代码异味。考虑重构。” 和“一个方法应该只有一个退出点,并且应该是方法中的最后一个语句”
以下是我的示例代码:

如果我使用 get1(),我将违反前一条规则,如果我使用 get2(),那么我将违反后一条规则。我更喜欢 A 方法应该只有一个退出点,但我不希望 PMD 报告“将对象分配给 null 是一种代码气味”,有人有什么好主意吗?非常感谢 :)
在这两种情况下,我都会使用条件运算符:
return condition > 5 ? Integer.valueof(123) : null;
不过,就我个人而言,我不会试图坚持一个退出点。很多时候,这会降低代码的可读性——通常你可以在方法的开头告诉返回值应该是什么(例如,因为它是一个基本情况)......那么为什么不直接返回它呢?教条式地坚持“只有一个出口点”的代码通常会以不必要的嵌套代码结束,这样就更难浏览了。
使用
return (condition > 5) ? Integer.valueOf(123) : null;
但我不知道这是否也是“代码气味”...... :)
只需删除第一种方法(get1)的else。在 Java 中对象默认为 null,不需要这个赋值(result = null)。