任何理由清理Java中的未使用的导入,而不是减less混乱?

有没有什么好的理由来避免Java中的未使用的导入语句? 据我所知,他们在那里的编译器,所以很多未使用的导入不会对编译的代码有任何影响。 只是为了减less混乱,避免命名冲突?

(我问,因为Eclipse给出了一个关于未使用的导入的警告,当我正在开发代码时,这是一种讨厌的事情,因为我不想删除导入,直到我确定我已经完成了devise类的devise。

我不认为性能问题或类似的东西可能,如果你不是删除import。

但是可能会有命名冲突,在导入列表界面等极less数情况下。

在Eclipse中,您可以使用快捷方式(取决于操作系统 – Win: Ctrl + SHIFT + O和Mac: COMMAND + SHIFT + O )来组织导入。 然后,Eclipse会清理导入部分,删除所有过时的导入等。如果您需要导入的东西,eclipse会在您使用Ctrl + SPACE完成语句时自动添加它们。 所以没有必要在你的课堂上保留未使用的代码。

像往常一样,未使用的代码会在读取代码的同时分散您和其他人的注意力。

一个是,如果你从类path中移除引用引用的类,你将不会得到一个毫无用处的愚蠢的编译器错误。 当您执行“where used”search时,您不会得到误报。

另一个(但这将是非常具体的性质)将是如果未使用的导入命名冲突与另一个导入,导致您无用地使用完全限定的名称。

附录:今天构build服务器开始失败的编译(甚至没有testing运行)与内存不足的错误。 它永远运行良好,签入没有任何修改的构build过程或重要的补充,可以解释这一点。 在尝试增加内存设置(在64位CentOS上运行一个64位的JVM)后,客户端可以编译的东西远远超出了我的要求。

开发者使用和放弃了一个不当的导入(他们使用了这个类,自动导入了它,然后意识到这是一个错误)。 这个未使用的导入引入了应用程序的整个单独的层,而IDE没有configuration为将它们分开,构build过程就是这样。 这个单一的导入被拖入了许多类中,导致编译器试图在没有相关的依赖库的情况下进行编译,这导致了很多问题,导致了内存不足错误。 解决了一个未使用的导入导致的问题花了一个小时。

从纯粹的angular度来看,任何依赖性都是产品的“约束”,因此可能会在以后引发维护问题。

例如,让我们假设你的程序使用com.XYZObjectPool类,稍后决定不使用它,但不要删除导入。 如果其他人现在想要实例化org.WVYObjectPool并引用ObjectPool,它们不会得到有关它的任何警告,直到某处出现了一个转换问题或调用问题。

顺便说一句,这不是一个不切实际的情况。 每次你问Eclipse的时候,都会问你想导入哪个特定版本的X,而你从多个软件包中select了一个,就是一个场景,如果你有导入​​的话,你可能会在不知情的情况下得到错误的select。

无论哪种方式,你可以要求Eclipse为你清理这些

警告? 请Eclipse自动为您清理它们。 这就是IntelliJ所做的。 如果它足够聪明来警告你,它应该足够聪明来清理它们。 我build议寻找一个Eclipse设置,告诉它停止这样一个唠叨,做一些事情。

这与用于维护的程序的清晰度有关。

如果你不得不维护一个程序,你会发现每行有一个类的导入是有用的。

考虑以下情况:

 import company.billing.*; import company.humanrerources.*; // other imports class SomeClass { // hundreds or thousands of lines here... public void veryImportantMethod() { Customer customer; Employee comployee; Department dept. // do something with them } } 

当你纠正或维护一段代码(或者只读它)时,读者知道所用的类属于哪个包是非常有帮助的。 如上所示使用通配符导入对此目的没有帮助。

即使使用IDE,也不希望hover或跳转到声明并返回,如果从function上了解当前代码所依赖的其他包和类,则更容易。

如果这是一个个人项目或者一些小事情,那真的没有关系,但是对于其他开发者必须使用的东西(并且这些年来一直保持的),这是必须的。

没有任何性能差异。

仅供参考,这让我不知所措,因为我不认为组织的import实际上是去除了未使用的import产品,我认为它只是对它们进行了整理。

在保存操作过程中自动删除导入会导致一些问题,例如在开发或testing过程中遇到问题并注释掉某些代码,保存代码时,代码注释部分使用的导入将被删除。 有时这不是问题,因为您可以撤消( Ctrl + Z )更改,但其他时间并不像您可能做出其他更改那么简单。 我也有一个问题,当我取消注释代码(我以前注释过,然后保存,因此删除了代码的导入),它会自动尝试猜测所需的导入和拾取错误的导入(例如,我想我有一个StringUtils类正在使用,并从错误的库中select了另一个相同的名称)。

我更喜欢手动组织导入,而不是将其作为保存操作。

对于日食我使用这个:窗口 – >首选项 – > Java的 – >编辑器 – >保存操作 – >检查组织导入checkbox(还有很多其他有用的东西,如格式化,使场最终等等。 )。 所以当我保存我的文件日食删除unessacryimport我。 在我看来,如果你不需要的东西,然后删除它(或让它被删除日食)。

你可以评论未使用的import陈述和警告不会打扰你,但你可以看到你有什么。

没有任何性能影响,但为了可读性,您可以使其清洁。 在Eclipse和IntelliJ IDEA中删除未使用的导入都非常简单。

Windows / Linux – Ctrl + Shift + O

Mac – Cmd + Shift + O

IntelliJ IDEAAndroid Studio

Windows / Linux – Ctrl + Alt + O

Mac – Cmd + Alt + O

我在几年前的某个地方读过,每个导入的类都将在运行时与导入类一起加载。 因此,删除未使用的,特别是整个包,将减less内存开销。 尽pipe我认为现代版本的Java可以处理这个问题,但可能这不是一个理由。

顺便说一下,在eclipse中你可以使用Ctrl + Shift + O来组织导入,但是你也可以在每次保存一个java文件时configuration一个处理这些事情的“清理器”。

对我来说,一个控制器类中的一个未使用的类导入在Jenkins构build中创build了一个编译问题,在代码清理过程中删除导入的类并在git中提交了删除操作,而未在本地testing构build。