是否有任何充分的理由避免Java中未使用的import语句?据我所知,它们适用于编译器,因此许多未使用的导入不会对编译的代码产生任何影响.它只是为了减少混乱并避免命名冲突吗?
(我问,因为Eclipse给出了一个关于未使用的导入的警告,这在我开发代码时有点烦人,因为我不想删除导入,直到我很确定我已经完成了设计类的操作.)
如果您不删除导入,我认为不会出现性能问题或类似问题.
但是在极少数情况下可能存在命名冲突,例如导入列表界面.
在Eclipse中,您始终可以使用快捷方式(取决于OS - Win:Ctrl + SHIFT + O
和Mac :) COMMAND + SHIFT + O
来组织导入.Eclipse然后清理导入部分删除所有陈旧的导入等.如果您需要再次导入的东西,eclipse将在您完成语句时自动添加它们Ctrl + SPACE
.因此,没有必要在您的课程中保留未使用的代码.
与往常一样未使用的代码会分散你和其他人在阅读代码,并留下也许是因为我需要它后来大多被视为坏习惯你有源代码的东西.
一个是如果你从类路径中删除导入引用的类,你将不会得到一个没有用处的愚蠢的编译器错误.当你执行"在哪里使用"搜索时,你不会得到误报.
另一个(但这将是在自然界中非常具体的)是,如果未使用的导入了与其他进口命名冲突,造成你不必要使用完全合格的名称.
附录:今天构建服务器开始出现内存错误导致编译失败(甚至没有测试运行).它运行良好,签入没有任何更改构建过程或可以解释这一点的重要补充.在尝试增加内存设置(这是在64位CentOS上运行64位JVM!)到远远超出客户端编译的位置之后,我逐一检查了签入.
开发人员使用和放弃了一个不正确的导入(他们使用该类,自动导入它,然后意识到这是一个错误).未使用的导入在应用程序的整个单独层中拉出,虽然IDE未配置为将它们分开,但构建过程是.单个导入拖入了很多类,编译器试图编译而没有类路径中的相关依赖库,这导致了很多问题导致了内存不足错误.花了一个小时来解决由未使用的导入引起的这个问题.
从纯粹的角度来看,任何依赖都是对产品的"约束",因此可能导致以后的维护问题.
例如,假设您的程序使用类com.XYZObjectPool,稍后您决定不使用它但从不删除导入.如果其他人现在想要实例化org.WVYObjectPool并且只是引用ObjectPool,他们就不会得到任何关于它的警告,直到某个地方有一个转换问题或调用问题.
顺便说一下,这不是一个不切实际的场景.每次你有Eclipse问你想要导入哪个特定版本的X,并且你从许多软件包中选择了一个,这是一个场景,如果你在那里进行了导入,你可能会在不知情的情况下做出错误的选择.
无论哪种方式,您都可以要求Eclipse为您清理这些内容