5

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

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

以下是我的示例代码:

在此处输入图像描述

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

4

3 回答 3

8

在这两种情况下,我都会使用条件运算符:

return condition > 5 ? Integer.valueof(123) : null;

不过,就我个人而言,我不会试图坚持一个退出点。很多时候,这会降低代码可读性——通常你可以在方法的开头告诉返回值应该是什么(例如,因为它是一个基本情况)......那么为什么不直接返回它呢?教条式地坚持“只有一个出口点”的代码通常会以不必要的嵌套代码结束,这样就更难浏览了。

于 2012-05-09T09:17:46.267 回答
1

使用

return (condition > 5) ? Integer.valueOf(123) : null;

但我不知道这是否也是“代码气味”...... :)

于 2012-05-09T09:21:53.773 回答
1

只需删除第一种方法(get1)的else。在 Java 中对象默认为 null,不需要这个赋值(result = null)。

于 2017-08-30T08:01:24.967 回答