gpt4 book ai didi

java - 这些 PMD 规则的原因是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:55:54 26 4
gpt4 key购买 nike

DataflowAnomalyAnalysis: Found 'DD'-anomaly for variable 'variable' (lines 'n1'-'n2').

DataflowAnomalyAnalysis: Found 'DU'-anomaly for variable 'variable' (lines 'n1'-'n2').

DD 和 DU 听起来很熟悉……我想说的是与最弱的前后条件相关的测试和分析,但我不记得具体细节了。

NullAssignment: Assigning an Object to null is a code smell. Consider refactoring.

如果对象是本地对象(不在方法之外使用),将对象设置为 null 是否有助于垃圾回收?还是那是一个神话?

MethodArgumentCouldBeFinal: Parameter 'param' is not assigned and could be declared final

LocalVariableCouldBeFinal: Local variable 'variable' could be declared final

使用final参数和变量有什​​么好处吗?

LooseCoupling: Avoid using implementation types like 'LinkedList'; use the interface instead

如果我知道我特别需要一个 LinkedList,为什么我不使用它来向 future 的开发人员明确表达我的意图?返回有意义的类路径中最高的类是一回事,但为什么我不声明我的变量是最严格的?

AvoidSynchronizedAtMethodLevel: Use block level rather than method level synchronization

block 级同步相比方法级同步有什么优势?

AvoidUsingShortType: Do not use the short type

我的第一门语言是 C 和 C++,但在 Java 世界中,我为什么不使用最能描述我的数据的类型?

最佳答案

  • DD 和 DU 异常(如果我没记错的话——我使用 FindBugs 并且消息有点不同)是指将一个值分配给一个从未读取过的局部变量,通常是因为它以前被重新分配了另一个值被阅读。一个典型的情况是在声明时使用 null 初始化某个变量。 Don't declare the variable until it's needed.

  • null 分配给局部变量以“帮助”垃圾收集器是一个神话。 PMD 让您知道这只会适得其反。

  • 在局部变量上指定 final 应该对优化器非常有用,但我没有任何当前 JIT 利用此提示的具体示例。我发现它在推理我自己的代码的正确性时很有用。

  • 根据……来指定接口(interface),interfaces 是一种很好的设计实践。您可以轻松更改集合的实现而不影响调用者。这就是接口(interface)的全部意义所在。

  • 我想不出调用者会需要一个LinkedList的很多情况,因为它不会公开任何未被声明的API一些界面。如果客户端依赖该 API,则可以通过正确的接口(interface)使用它。

  • block 级同步允许临界区更小,这允许尽可能多的工作同时完成。也许更重要的是,它允许使用由封闭对象私下控制的锁定对象。这样,您可以保证不会发生死锁。使用实例本身作为锁,任何人都可能在其上错误地同步,从而导致死锁。

  • short 类型的操作数在任何操作中都被提升为 int。这个规则是让你知道这个促销正在发生,你不妨使用一个int。但是,使用 short 类型可以节省内存,所以如果它是实例成员,我可能会忽略该规则。

关于java - 这些 PMD 规则的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com