2013-09-23 58 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做得很好)。

爲什麼它被認爲是一種不好的做法?

您只需在不需要的情況下添加對變量的引用。

這隻會增加垃圾收集器的工作量。

相關問題