每當我編程,我似乎積累了很多「垃圾」代碼,不再使用的代碼。爲了保持我的代碼整潔,並避免進行任何昂貴和不必要的計算,有沒有簡單的方法來判斷是否存在未被使用的代碼?有沒有辦法判斷java中是否有代碼沒有被使用?
回答
我認爲「未使用的代碼」是指在運行時總是不執行的代碼。我希望我能正確解釋你。
對此進行簡單檢查的方法非常簡單。只需使用IntelliJ IDEA來編寫代碼即可。它會告訴你,你的代碼部分將會被執行,並且代碼可以被簡化。例如,
if (x == 5) {
}
然後它會告訴你,這個if語句是多餘的。或者如果你有這個:
return;
someMethod();
IDE會告訴你,someMethod()
永遠不能達到。它還提供了很多其他很酷的功能。
但有時這還不夠。如果你有
if (x == 5) {
someMethod();
}
在你的代碼
但實際上什麼,x
只能在1到4的範圍內? IDE不會告訴你這一點。您可以使用一個工具,通過運行大量測試來顯示代碼覆蓋率。然後你可以看到你的代碼的哪一部分沒有被執行。
如果你不想使用這樣的工具,你可以在你的方法中放置斷點。然後手動執行一些測試。當調試器遍歷代碼時,您可以精確地看到代碼的位置,以及代碼的哪個部分未被執行。
另一種方法是使用IDE的查找/替換功能。檢查你的一些公共/私人方法是不是在任何地方被調用。例如,要檢查someMethod()
是否被調用,請在整個項目中搜索someMethod
並查看是否有除聲明以外的事件。
但最有效的辦法是,
停止寫這種代碼在第一位!
在Java中很難做到,因爲它是一種反射語言。 (例如,您不能簡單地尋找對某個類或函數的調用,因爲可以使用反射來使用只能在運行時解析的字符串調用函數。)
因此,您完全可以確定。
如果您的代碼庫有足夠的單元測試,那麼冗餘代碼的可能性不應該成爲問題。
儘量避免積累垃圾在首位。刪除你不再需要的東西。 (你可以做一個備份或更好地使用源代碼管理系統。)
你也應該爲你的函數編寫單元測試。所以你知道它是否仍然有效後,你刪除了一些東西。
除此之外,大多數IDE會向您顯示未使用的本地變量和私有方法。
我認爲最好的檢查方法是安裝像eclemma這樣的覆蓋插件,並創建單元和集成測試,以獲得完成使用代碼/任務的代碼的覆蓋率100%。 測試完成並運行後無需進行測試或不通過的代碼就是您未使用的代碼
在這方面幫助您的基本原則之一是儘可能減少一切可見性。如果一個班級可以是私人的,請不要將其設爲默認,保護或公開。同樣適用於方法和變量。當你可以確定是否有什麼東西不在課堂外使用時,它會容易得多。在這種情況下,即使是像Eclipse和IntelliJ Idea這樣的IDE,也會向您推薦未使用的代碼。
在開發和重構代碼時使用這種做法是自信地清理未使用代碼而不會破壞應用程序的可能性的最佳方法。即使在使用反射時,這也會有助於情景。
- 1. 有沒有辦法判斷所有驗證器是否滿足?
- 2. 有沒有辦法判斷x-sendfile是否已經啓動?
- 3. 有沒有辦法判斷ReactElement是否呈現「null」?
- 4. 有沒有辦法判斷聲音是否正在播放?
- 5. 有沒有辦法判斷是否收到LocalBroadcastManager廣播?
- 6. 有沒有辦法判斷是否顯示軟鍵盤?
- 7. 有沒有辦法判斷Safari是否全屏? (例如document.fullscreenElement)
- 8. 有沒有辦法判斷默認流是否打開?
- 9. 有沒有辦法判斷一個活動是否開始?
- 10. 有沒有辦法判斷sdcard是否已安裝或根本沒有安裝?
- 11. 有沒有辦法判斷對象是類還是對象?
- 12. 鑑於任意收集,有沒有辦法判斷它是否有序?
- 13. 有沒有辦法判斷有線耳機是否連接到手機
- 14. 有沒有辦法判斷電子郵件是否有OneDrive附件?
- 15. 有沒有辦法通過編程來判斷系統是否啓用觸摸?
- 16. 有沒有辦法使Jetty使用SSL與Java代碼
- 17. 有沒有辦法判斷一個類是否是一個接口?
- 18. 有沒有辦法判斷宏展開是否會看到詞法上下文?
- 19. 有沒有辦法檢查代碼是否在TransactionScope中執行?
- 20. 有沒有辦法比較舊密碼是否被散列?
- 21. 有沒有辦法判斷Jenkins服務器是否完成關閉?
- 22. 有沒有辦法判斷Android MediaPlayer目前是否正在播放歌曲?
- 23. Objective-C有沒有辦法判斷對象是否設置爲autorelease?
- 24. 有沒有辦法隱藏JavaScript代碼?
- 25. 有沒有辦法從代碼
- 26. 有沒有辦法在代碼
- 27. Rails3 - 有沒有辦法判斷哈希鏈接(內部鏈接)是否已被使用?
- 28. 有沒有辦法判斷它已經與find_or_create_by
- 29. 有沒有辦法判斷一個ActiveRecord查詢打了極限
- 30. 有沒有辦法判斷表是否在另一個數據庫/服務器中被引用?
如果不使用代碼,它如何執行昂貴的計算? –
評論這些行 – SmashCode