2016-02-20 141 views
0

每當我編程,我似乎積累了很多「垃圾」代碼,不再使用的代碼。爲了保持我的代碼整潔,並避免進行任何昂貴和不必要的計算,有沒有簡單的方法來判斷是否存在未被使用的代碼?有沒有辦法判斷java中是否有代碼沒有被使用?

+7

如果不使用代碼,它如何執行昂貴的計算? –

+0

評論這些行 – SmashCode

回答

0

我認爲「未使用的代碼」是指在運行時總是不執行的代碼。我希望我能正確解釋你。

對此進行簡單檢查的方法非常簡單。只需使用IntelliJ IDEA來編寫代碼即可。它會告訴你,你的代碼部分將會被執行,並且代碼可以被簡化。例如,

if (x == 5) { 

} 

然後它會告訴你,這個if語句是多餘的。或者如果你有這個:

return; 
someMethod(); 

IDE會告訴你,someMethod()永遠不能達到。它還提供了很多其他很酷的功能。

但有時這還不夠。如果你有

if (x == 5) { 
    someMethod(); 
} 
在你的代碼

但實際上什麼,x只能在1到4的範圍內? IDE不會告訴你這一點。您可以使用一個工具,通過運行大量測試來顯示代碼覆蓋率。然後你可以看到你的代碼的哪一部分沒有被執行。

如果你不想使用這樣的工具,你可以在你的方法中放置斷點。然後手動執行一些測試。當調試器遍歷代碼時,您可以精確地看到代碼的位置,以及代碼的哪個部分未被執行。

另一種方法是使用IDE的查找/替換功能。檢查你的一些公共/私人方法是不是在任何地方被調用。例如,要檢查someMethod()是否被調用,請在整個項目中搜索someMethod並查看是否有除聲明以外的事件。

但最有效的辦法是,

停止寫這種代碼在第一位!

1

在Java中很難做到,因爲它是一種反射語言。 (例如,您不能簡單地尋找對某個類或函數的調用,因爲可以使用反射來使用只能在運行時解析的字符串調用函數。)

因此,您完全可以確定。

如果您的代碼庫有足夠的單元測試,那麼冗餘代碼的可能性不應該成爲問題。

0

儘量避免積累垃圾在首位。刪除你不再需要的東西。 (你可以做一個備份或更好地使用源代碼管理系統。)

你也應該爲你的函數編寫單元測試。所以你知道它是否仍然有效後,你刪除了一些東西。

除此之外,大多數IDE會向您顯示未使用的本地變量和私有方法。

0

我認爲最好的檢查方法是安裝像eclemma這樣的覆蓋插件,並創建單元和集成測試,以獲得完成使用代碼/任務的代碼的覆蓋率100%。 測試完成並運行後無需進行測試或不通過的代碼就是您未使用的代碼

1

在這方面幫助您的基本原則之一是儘可能減少一切可見性。如果一個班級可以是私人的,請不要將其設爲默認,保護或公開。同樣適用於方法和變量。當你可以確定是否有什麼東西不在課堂外使用時,它會容易得多。在這種情況下,即使是像Eclipse和IntelliJ Idea這樣的IDE,也會向您推薦未使用的代碼。

在開發和重構代碼時使用這種做法是自信地清理未使用代碼而不會破壞應用程序的可能性的最佳方法。即使在使用反射時,這也會有助於情景。

相關問題