除了减少混乱之外,还有什么理由清理Java中未使用的导入?

2022-08-31 10:02:14

有什么好的理由避免在Java中使用未使用的导入语句吗?据我所知,它们是编译器的,因此许多未使用的导入不会对编译的代码产生任何影响。这仅仅是为了减少混乱并避免命名冲突吗?

(我问是因为Eclipse给出了关于未使用的导入的警告,这在开发代码时有点烦人,因为在我非常确定我完成类的设计之前,我不想删除导入。


答案 1

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

但是,在极少数情况下(如导入列表接口)可能会存在命名冲突。

在 Eclipse 中,您始终可以使用快捷方式(取决于 OS - Win: 和 Mac:)来组织导入。然后,Eclipse 会清理导入部分,删除所有过时的导入等。如果你再次需要一个导入的东西,eclipse 会在你用 完成语句时自动添加它们。因此,没有必要在类中保留未使用的代码。Ctrl + SHIFT + OCOMMAND + SHIFT + OCtrl + SPACE

一如既往,未使用的代码会在阅读代码时分散您和其他人的注意力,并在您的活动代码中留下一些东西,因为也许我以后需要它主要被视为不好的做法。


答案 2

一个是,如果从类路径中删除导入所引用的类,则不会得到一个没有任何用处的愚蠢的编译器错误。而且,当您执行“使用位置”搜索时,您不会收到误报。

另一个(但这在本质上是非常具体的)是,如果未使用的导入与另一个导入发生命名冲突,从而导致您不必要地使用完全限定的名称。

附录:今天,生成服务器开始编译失败(甚至没有测试运行),并出现内存不足错误。它永远运行良好,并且签入对构建过程没有任何更改,也没有可以解释这一点的重要添加。在尝试将内存设置(这是在64位CentOS上运行64位JVM!)到远远超出客户端可以编译的范围之后,我逐个检查了签入。

开发人员使用并放弃了不正确的导入(他们使用了该类,自动导入它,然后意识到这是一个错误)。未使用的导入拉入了应用程序的整个单独层,虽然IDE未配置为将它们分开,但构建过程是。该单个导入拖入了如此多的类,以至于编译器试图在类路径中没有相关的依赖库的情况下进行编译,这导致了如此多的问题,从而导致内存不足错误。花了一个小时来解决由未使用的导入引起的此问题。