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



Answers

一種情況是,如果您從類路徑中移除引用引用的類,則不會出現無用的無用編譯器錯誤。 當您執行“where used”搜索時,您不會得到誤報。

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

附錄:今天,構建服務器開始出現編譯失敗(甚至沒有運行測試),出現內存不足錯誤。 它永遠運行良好,並且簽入對構建過程沒有任何更改或可以解釋這一點的重要添加。 在嘗試增加內存設置(這是在64位CentOS上運行64位JVM!)到客戶可以編譯的地方以外,我逐一檢查了這些檢查。

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

Question

有什麼好的理由來避免Java中未使用的import語句? 據我了解,它們在編譯器中,因此大量未使用的導入對編譯代碼沒有任何影響。 只是為了減少混亂,避免命名衝突?

(我問,因為Eclipse給出了一個關於未使用的導入的警告,當我開發代碼時這有點令人討厭,因為我不想刪除導入,除非我確定我已經完成了設計類的設計。)




你可以評論未使用的導入語句,警告不會打擾你,但你可以看到你有什麼。




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




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

順便說一下,在eclipse中,你可以使用Ctrl + Shift + O來組織導入,但是你也可以配置一個“清理程序”來處理這些事情(和其他許多),每次你保存一個java文件。




僅供參考,這讓我意識到,因為我不認為組織進口實際上刪除了未使用的進口,我認為它只是對它們進行了排序。

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

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




Links