有时我发现一些PMD规则相互冲突,因此您无法编写满足所有PMD规则的代码。
例如,似乎以下两个规则相互排除: “将对象分配给null是一种代码气味。考虑重构。” 和 “一个方法应该只有一个退出点,这应该是方法中的最后一个语句”
以下是我的示例代码:
如果我使用get1(),我将违反前一条规则,如果我使用get2(),那么我将违反后一条规则。我更喜欢A方法应该只有一个退出点,但我不希望PMD报告“将对象分配给null是代码味道”,有没有人有任何好主意?非常感谢:)
答案 0 :(得分:8)
在这两种情况下,我都使用条件运算符:
return condition > 5 ? Integer.valueof(123) : null;
我个人不试图坚持一个退出点。有太多次使代码更少可读 - 通常你可以在方法的开头告诉返回值应该是什么(例如由于它是一个基本情况)......那么为什么不回来呢?教条地坚持“只有一个出口点”的代码通常会以不必要的嵌套代码结束,然后更难以通过。
答案 1 :(得分:1)
使用
return (condition > 5) ? Integer.valueOf(123) : null;
但我不知道那是“代码味道”......:)
答案 2 :(得分:1)
只需删除第一个方法的else(get1)。在Java中,默认情况下对象为null,不需要此赋值(result = null)。