7

Codenarc 是一个框架,用于分析 Groovy 代码的缺陷、不良做法、不一致、样式问题等。

这条规则是否有原因:MisorderedStaticImports Rule

检查不应该在非静态导入之后的静态导入语句。

违规示例:

import my.something.*
import static foo.bar.*

public class MyClass{}

我不明白这条规则的动机或含义。

4

3 回答 3

12

正如 Marko Topolnik 所说,导入的顺序与程序的含义无关。

我尝试查看 JLS 以获得关于该效果的明确声明,但我找不到。Java教程也没有提到导入顺序。但是, 的语义import是这样的,它没有任何区别。如果导入由于导入顺序而导致任何潜在的歧义,JLS 会说这是一个编译错误。

因此,这只是一种风格惯例。(事实上​​,如果您查看规则,它甚至可以让您选择将静态导入放在首位!)


更新

@Eugene Stepanenkov 指出了这个问答

这是由 Java 8 之前的 Oracle Java 编译器版本中的一个模糊错误引起的。它(最终)被确认为一个错误并已修复。

我想,这意味着该错误可能是 Codenarc 警告的动机的一部分。但是,如果您使用的是受该错误影响的 Java 编译器,那么导入顺序为“错误”的任何代码都将根本无法编译……使 Codenarc 警告毫无意义。

于 2012-11-14T09:46:24.790 回答
0

风格问题。将只有一两个静态导入,但对引入函数名称等可理解性有很大影响。因此将它们放在顶部(用于阅读)可能被认为是好的风格。IDE 折叠“[+]”支持也可能被考虑在内。

我认为他们希望将静态导入与其他导入分开。

于 2012-11-14T09:56:02.153 回答
0

选择导入顺序(静态和非静态)可能会在示例中的这种边缘情况下产生问题。

于 2016-11-05T16:44:12.797 回答