PMD规则冲突:一个方法应该只有一个退出点,这应该是方法中的最后一个语句

时间:2012-05-09 09:15:12

标签: java pmd

有时我发现一些PMD规则相互冲突,因此您无法编写满足所有PMD规则的代码。

例如,似乎以下两个规则相互排除: “将对象分配给null是一种代码气味。考虑重构。” 和 “一个方法应该只有一个退出点,这应该是方法中的最后一个语句”

以下是我的示例代码:

enter image description here

如果我使用get1(),我将违反前一条规则,如果我使用get2(),那么我将违反后一条规则。我更喜欢A方法应该只有一个退出点,但我不希望PMD报告“将对象分配给null是代码味道”,有没有人有任何好主意?非常感谢:)

3 个答案:

答案 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)。