跳转到主要内容

保存的文章

Java中导入的重要性

Dave Nicolette |领导敏捷
Dave Nicolette 高级顾问
阅读: Java中导入的重要性

Java中导入的重要性

2018年8月的Kevlin Henney的推文重新打开了一件古老的蠕虫:

“问题”对我来说从未似乎是一个大型交易。即便如此,当我第一次读过凯夫林的推文时,几件事就想到了:

  • Java旨在双向工作:使用通配符或具有特定的通配符。所以,更喜欢一种方式或另一方的程序员使用语言“如设计”。
  • IDE不一定默认为特定导入。例如,当今市场上的领先的Java IDE,Jetbrains Intellij Ideage,默认为通配符进口(嗯,它根据需要采取合理的选择)。而且我很确定你也可以将ides配置为您的喜好。

我并没有期望从这条推特中得到什么,我对这些回复感到有点惊讶。例如:

这让我感到惊讶于几种不同的方式。

  • 我没有意识到詹姆斯•邦德从事软件开发。
  • 为什么有人认为导入陈述对课堂装载有任何影响?

如果你认为第一点表明我没有像其他人一样认真对待这个话题,让我澄清一下:你是对的。

什么有趣的是,许多程序员认为这一点很重要,并会以极大的情感捍卫自己的偏好。

在对Kevlin原始推文的第一个回应中,通配符导入被贴上了“不好的做法”的标签,就好像它是一个已经确定的事实,不需要进一步的解释。007不是唯一一个这么认为的人。在StackOverflow问题从2013年10月,user2810581(我不能想象给我的孩子命名user2810581;thx - 1138她说:“我是一名学生,我一直在看一些书(比如我的书)。”Java的假人,对于一个)表示,使用通配符的进口陈述是不良的编程实践,并鼓励读者避免使用它。虽然,在课堂上,我们鼓励我们使用它。有人可以解释为什么编程练习差吗?“因此,假设写入书籍以及社交媒体上的表达,也(显然)也没有解释。

回答一个不同的stackoverflow问题,2008年10月,Benjamin Pollack解释说:“它唯一的问题是它禁止了您的本地名称空间。例如,假设您正在编写Swing应用程序,因此需要java.awt.Event,也是与公司的日历系统相互作用,它具有COM.MYCompany.Calendar.Event“。这是真的,但在有歧义时,似乎可以很容易地指定单个类,否则使用通配符进口,如果“杂乱”是对您的关注点。哦,如果你正在写一个挥杆应用程序,请接受我的哀悼。

所以,这看起来像是个人偏好的问题。然而,人们似乎还是愿意花钱的大量的时间和精力强制他们的工具避免生成通配符导入语句。StackOverflow给出的答案是:“很明显你想禁用这个:强制IntelliJ单独包含每一个导入。它使人们更容易找出您正在使用的类的确切来源。”

找出包含的代码的确切来源是一个好东西®。但是,如果您使用的是复杂的IDE,如IntelliJ IDEA(更不用说不那么复杂的IDE,或者任何相当好的文本编辑器),则不需要手动解决这个问题。大多数工具提供了一种方法来搜索项目的引用和声明,并帮助我们识别包含我们没有源代码的类文件的jar。

除非您碰巧,否则您无需在自己的导入陈述中删除每个导入的类就像诸如此类的事情。如果你像它一样,你不需要改变现有的代码来使用通配符导入,只是为了摆脱视觉上的混乱;你可以使用坍塌大多数编辑器的特性,将所有导入语句简化为一行。

因为几乎所有工具都有这些功能,所以个人偏好的变化不必导致冗长的辩论或围绕复杂的工作。每个人都可以有代码,这些代码看起来就像它看起来那样。

在一个相关的注释中,我们期望在Java中找到支持相关功能。我们的意图通常是一次性导入一个包,而不是单个类。

一个实用的经验法则可能是指定包名直到最后一个节点,但不一定要为每个类编写单独的import语句。在我看来,这是一种没有视觉混乱的意图揭示,就像在Kevlin开始的帖子中Dan North的例子:

在具有类似于Java“包”概念的其他语言中,关于import语句也存在类似的循环争论。

在我这个年纪,你会认为我对所有事情都有看法。也许不止一个。但这次,我没有。对我来说,是否在Java中使用通配符导入的问题就像下面这些棘手的问题一样:

  • 要缩进多远
  • 制表符和空格
  • 同一行或下一行的左花括号
  • 避免静态导入,因此您可以看到assertequals()真的assert.assertequals()
  • 其他静脉中的其他人

好吧,我可能只是一个观点。这是一个小的。

我认为,如果我们在维护代码库的社区中努力保持一致性,我们可以为自己省去一些麻烦。如果这是一个单一的团队,一个大型组织中的团队,一个拥有多个维护人员的开源项目,或者一个使用给定编程语言的全球开发人员社区,那么这就是“社区”。如果您的社区要求通配符导入或四个空格的缩进、制表符或下一行的花括号或其他内容,通常最好使用它;不是因为有一种方法是从技术上讲或者客观地更好,但由于所在的有用性令人惊讶的原则

我们的神经元有更重要的事情要做。

下一个;平衡的专业兴趣

留下你的评论

您的电子邮件地址将不会被公布。必填字段被标记*