2013-09-23 61 views
7

我开始了与Sonar的冒险;)UnnecessaryLocalBefore返回 - 为什么它不好?

声纳与它的默认配置PMD UnnecessaryLocalBefore返回错误设置在主要级别上。

List<Todo> filtered = em.createQuery(query).getResultList(); 
    return filtered; 

这意味着我应该改变上面的代码在一行。

对我来说这真的很有趣,因为我建议我的同事在返回之前将这个“不必要的”本地化。

我觉得它很容易调试。当我在返航线上设置断点时,我确信当我到达那里时,这个值将准备就绪,我不必对我的陈述进行选择,或者做“超越表达式”。

除了我相信它对减少方法中的回报点有积极的影响。

我的问题是:是否有某种解释/讨论为什么Checkstyle,PMD,FindBugs等项目的错误被确认为错误?

+1

这并不坏,只是没有必要。这些静态分析工具不会简单地标记错误。相反,他们提供了用于检查各种事物的工具箱,其选择取决于您正在开发的软件种类。您的项目可能会要求您尽可能使用尽可能少的代码行,或者您的特殊编译器不会优化这种情况,并且您无法应付额外的时钟周期...然后,此项检查适合您。否则你可以安全地关闭它。 –

+0

这是一个很好的相关问题:http://stackoverflow.com/questions/31733811/local-variables-before-return-statements-does-it-matter/31734226#31734226 –

回答

0

如果你的观点只是查看列表的内容,那么你可以把断点放在方法的调用者中。另一个选择是放置一个断点并评估值(Eclipse & IntelliJ做得很好)。

为什么它被认为是一种不好的做法?

您只需在不需要的情况下添加对变量的引用。

这只会增加垃圾收集器的工作量。

相关问题