【问题标题】:Is it bad to import unused packages?导入未使用的包不好吗?
【发布时间】:2015-01-06 23:05:46
【问题描述】:

例如,当您在同一个文件的团队中工作并且对代码正常工作所需的不同导入包只有部分了解时。您更改了此文件中的一些代码,并发现一些代码因此变得多余。您删除了该部分,现在不知道整个代码是否仍然依赖于所有包。

[当然坏可以通过多种方式客观化:速度、阅读能力等]

【问题讨论】:

  • 我一直在关注你,直到'你删除了那部分,现在不知道整个代码是否仍然依赖于所有包。'
  • @ChrisK 我试图让它变得更好。希望问题现在很清楚。
  • 好的 IDE 可以选择在提交前或保存时优化导入。养成使用它的好习惯。

标签: java import packages


【解决方案1】:

是的。有几个原因:

  1. 如果人们在查看可能使用或未使用的导入的代码时会感到困惑。
  2. 导入的多个同名类可能存在导入冲突。这将要求除一个类似的类名之外的所有类名都由代码中的全限定名引用。

由于这些原因,如果不需要 import 语句,java 将发出警告,并且 IDE 可以自动删除未使用的导入。

注意,我没有提到速度或性能变化,我认为 javac 足够聪明,知道不使用任何不需要的导入,所以编译的类就像你没有导入它一样。

【讨论】:

    【解决方案2】:

    您应该始终只使用必要的少量导入,并且不要使用像 java.util.* 这样的完整包导入。今天的 IDE 通常通过“组织导入”操作来支持这一点,在此期间未使用的导入将被删除。

    如果您有一堆未使用的导入并且您修改了代码,那么您可能会添加/更改引用未使用的导入所涵盖的类的代码。这样你就不会注意到你不小心使用了它们,即使这可能不是你的意图。

    如果您只有最少的导入,如果您添加引用新类的代码,编译器会立即通过显示错误来通知您,并让您可以选择要使用的类。

    此外,如果您使用的导入超出程序中当前引用的内容,则会增加破坏程序以适应未来 Java 版本或您使用的库的机会。

    示例:如果您的程序仅使用java.util.HashSet,但您仍然导入java.util.*,并且您使用另一个第三方库,从其中导入com.mylib.*,您的代码可能会编译。如果在未来的版本中,第 3 方库添加了一个名为 com.mylib.HashSet 的类,您的代码可能无法再编译,因为编译器可能无法判断您想要使用哪个类(例如 java.util.HashSetcom.mylib.HashSet) .
    您是否只导入了java.util.HashSet,例如com.mylib.SomeUtil 首先,您的代码仍然可以使用新版本的 3rd 方库编译。

    【讨论】:

      【解决方案3】:

      导入未使用的包不会影响您的速度,如 here 所述

      但是...如果您导入了无用的包,这确实会使您的代码更难阅读。如果您使用的是 NetBeans,则始终可以使用 Ctrl + Shift + I 删除未使用的导入。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2019-08-31
        相关资源
        最近更新 更多