2013-02-10 98 views
0

我使用PMD工具來查找Java代碼中的錯誤(如果有的話)。 PMD給出的一個共同的建議是「局部變量{local_variable}可以被聲明爲最終的」。如果狀態沒有進一步改變,是否有必要將所有局部變量聲明爲final?需要了解一個PMD規則

+0

http://stackoverflow.com/questions/1615419/what-is-the-reason-for-these-pmd-rules – 2013-02-10 09:57:10

+0

另請參見[this discussion](http://stackoverflow.com/questions/316352) /爲什麼 - 會 - 一個標記,局部變量,和方法參數,爲決賽,在-JAVA) – assylias 2013-02-10 10:07:32

回答

2

是否有必要將所有局部變量聲明爲final,如果它的狀態沒有進一步改變?

不,這是沒有必要的,除非在一種情況下:如果您需要訪問匿名類中的變量。

當所有局部變量最終沒有變化時,是不是最好的做法?

這顯然是主觀的 - 我個人認爲,它雜波的代碼不必要的,如果你遵循良好的編碼習慣,你的方法應該是足夠短,不言自明的,以至於讓你的變量最終不應要求。

1

那麼這也是一個語言設計的問題,將變量明確設置爲final,並且讓final關鍵字全部出現。在scala中默認的是讓所有東西都是最終的和不可變的,從而推動更多功能的設計。如果你想知道爲什麼使用final,請看scala - 這應該給你一些想法。

我會認爲它不好使用最後的方式。最終變量 - 從這個意義上說,是不變的或不變的。這是一種編程合同。代碼中最終變量的副作用更少。如果你離開了,你也可以省去所有的私人領域。何必?

在eclipse中,當您打開對話框「Source/Clean Up ...」時,您可以自動添加所有必需的最終字段以及許多其他被視爲「更清潔」的內容(所以我想它被稱爲「清理」因爲不使用final將被認爲是不潔淨的)。

這取決於你 - 使用它 - 或離開它。使用它 - 並特別關注最終不能應用的代碼。也許這個代碼可以改進爲最終的?

所以:是的!這是很好的做法!