任何理由清理Java中未使用的導入,而不是減少混亂?


Answers

一個是,如果你從類路徑中移除引用引用的類,你將不會得到一個毫無用處的愚蠢的編譯器錯誤。 當您執行“where used”搜索時,您不會得到誤報。

另一個(但這將是非常具體的性質)將是如果未使用的導入命名衝突與另一個導入,導致您無用地使用完全限定的名稱。

附錄:今天構建服務器開始失敗的編譯(甚至沒有測試運行)與內存不足的錯誤。 它永遠運行良好,簽入沒有任何修改的構建過程或重要的補充,可以解釋這一點。 在嘗試增加內存設置(在64位CentOS上運行一個64位的JVM)後,客戶端可以編譯的東西遠遠超出了我的要求。

開發者使用和放棄了一個不當的導入(他們使用這個類,自動導入它,然後意識到這是一個錯誤)。 這個未使用的導入引入了應用程序的整個單獨的層,而IDE沒有配置為將它們分開,構建過程就是這樣。 這個單一的導入被拖入了許多類中,導致編譯器試圖在沒有相關的依賴庫的情況下進行編譯,這導致了很多問題,導致了內存不足錯誤。 解決了一個未使用的導入導致的問題花了一個小時。

Question

有沒有什麼好的理由來避免Java中的未使用的導入語句? 據我所知,他們在那裡的編譯器,所以很多未使用的導入不會對編譯的代碼有任何影響。 只是為了減少混亂,避免命名衝突?

(我問,因為Eclipse給出了一個關於未使用的導入的警告,當我正在開發代碼時,這是一種討厭的事情,因為我不想刪除導入,直到我確定我已經完成了設計類的設計。




僅供參考,這讓我不知所措,因為我不認為組織的進口實際上是去除了未使用的進口產品,我認為它只是對它們進行了整理。

在保存操作過程中自動刪除導入會導致一些問題,例如在開發或測試過程中遇到問題並註釋掉某些代碼,保存代碼時,代碼註釋部分使用的導入將被刪除。 有時這不是問題,因為您可以撤消( Ctrl + Z )更改,但其他時間則不像您可能進行其他更改那麼簡單。 我也有一個問題,當我取消註釋代碼(我以前註釋過,然後保存,因此刪除了代碼的導入),它會自動嘗試猜測所需的導入,並挑出錯誤的(例如,我想我有一個StringUtils類正在使用,並從錯誤的庫中選擇了另一個相同的名稱)。

我更喜歡手動組織導入,而不是將其作為保存操作。




你可以評論未使用的進口陳述和警告不會打擾你,但你可以看到你有什麼。




警告? 請Eclipse自動為您清理它們。 這就是IntelliJ所做的。 如果它足夠聰明來警告你,它應該足夠聰明來清理它們。 我建議尋找一個Eclipse設置,告訴它停止這樣一個嘮叨,做一些事情。




我在幾年前的某個地方讀過,每個導入的類都將在運行時與導入類一起加載。 所以刪除未使用的,尤其是整個包,將減少內存開銷。 儘管我認為現代版本的java可以處理這個問題,但可能這不是一個理由。

順便說一下,在eclipse中你可以使用Ctrl + Shift + O來組織導入,但是你也可以在每次保存一個java文件時配置一個處理這些事情的“清理器”。