我正在使用 PMD 分析代码,它会产生一些我不知道如何修复的高优先级警告。
1) 避免 if(x!=y)..; else...;
但是需要这个逻辑怎么办呢?也就是说,我确实需要检查是否 x!=y
?我该如何重构它?
2) 使用显式作用域而不是默认的包私有(private)级别。
但是该类确实只在包内使用。我应该使用什么访问修饰符?
3) 参数没有赋值,可以声明为final。
我是否应该在PMD 指出的所有地方添加final 关键字?
最佳答案
避免否定:代替 if( x!=y ) doThis() else doThat()
,首先检查正例,因为人/人类倾向于喜欢积极的东西胜过消极的东西。读源码的时候脑子里要颠倒逻辑,真是绞尽脑汁。因此,改为:
if ( x!=y ) doThis() else doThat() // Bad - negation first
if ( x==y ) doThat() else doThis() // Good - positive first
明确范围界定:根据PMD website ,这是一个有争议的规则。你可能讨厌它,别人喜欢它。您应该做的是将类中的所有字段设为私有(private)。似乎有一个具有包可见性的字段或方法(不是类),例如像这样:
class Foo {
/* private missing */ Object bar;
}
最终参数:方法参数应该是最终的,以避免意外重新分配。这只是一个很好的做法。如果您使用的是 Eclipse,内容帮助甚至会提供名为 “尽可能将修饰符更改为最终修饰符” 的快速修复。只需使用 Ctrl-a 选择编辑器中的所有代码,然后按 Ctrl-1。
关于java - 如何解决以下 PMD 违规问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599446/