太多的import垃圾邮件我的代码

在我的项目中,我有一个shapes包,其中包含我为我的图形程序设计的形状,例如Rectangle,Circle。 我还有一两个与java.awt类名称相同的包。

现在,因为我不想重命名我的代码库中的每个类,为了向我的源文件显示我所说的类,当我声明一个新的Rectangle时,我需要:

1-显式导入矩形类,即导入shapes.Rectangle

要么

2-只导入我需要的java.awt类而不导入java.awt。*,它自动包含awt.Rectangle

现在的问题是两种方式导致大量导入,我目前在每个源文件中平均有15-25个导入,这严重地使我的代码混乱和混乱。

代码中的导入太多是件坏事吗? 有没有办法解决?

是的,太多的导入是一件坏事,因为它会使您的代码变得混乱并使您的导入更具可读性。

使用通配符避免长导入列表。

Kevlin Henney在他的演讲中谈到了这个精确的Stack Overflow问题27:54 当您使用这些企业编程技巧时 , 清洁编码器会讨论您的代码会发生什么? 2017年1月16日至20日伦敦

  • 按类导入类而不是导入整个包是一种很好的做法

  • 任何好的IDE(例如Eclipse )都会在一行中折叠导入,并且您可以在需要时展开它们,这样它们就不会使您的视图混乱

  • 如果发生冲突,您可以始终引用完全限定的类,但如果这两个类中的一个在您的控制之下,您可以考虑重命名它。 (使用Eclipse,右键单击该类,选择Refactor -> Rename ,它将注意更新其所有引用)。

  • 如果你的class级是从AWT和你的形状包导入的,那没关系。 可以从几个类导入; 但是,如果你发现自己从很多不同的来源import,这可能表明你的class级做得太多了,需要分开。

另一种方法是根据需要键入完全限定的类名。 在我的例子中,有2个Element对象,一个由我org.opensearch.Element和另一个org.w3c.dom.Element

要解决名称冲突,以及最小化导入“混乱”,我已经完成了这个(在我的org.opensearch.Element类中):

 public org.w3c.dom.Element toElement(org.w3c.dom.Document doc) { /* .... */ } 

如您所见,返回Element类型是完全类型的(即我已经指定了Element的完全限定的类名)。

问题解决了! 🙂

在Java世界中有很多import是正常的 – 你真的需要导入所有东西。 但是如果您使用Eclipse之类的IDE,它会为您执行导入。