Codenarc 是一个框架,用于分析 Groovy 代码的缺陷、不良做法、不一致、样式问题等。
这条规则是否有原因:MisorderedStaticImports Rule:
检查不应该在非静态导入之后的静态导入语句。
违规示例:
import my.something.* import static foo.bar.* public class MyClass{}
我不明白这条规则的动机或含义。
正如 Marko Topolnik 所说,导入的顺序与程序的含义无关。
我尝试查看 JLS 以获得关于该效果的明确声明,但我找不到。Java教程也没有提到导入顺序。但是, 的语义import
是这样的,它没有任何区别。如果导入由于导入顺序而导致任何潜在的歧义,JLS 会说这是一个编译错误。
因此,这只是一种风格惯例。(事实上,如果您查看规则,它甚至可以让您选择将静态导入放在首位!)
更新
@Eugene Stepanenkov 指出了这个问答
这是由 Java 8 之前的 Oracle Java 编译器版本中的一个模糊错误引起的。它(最终)被确认为一个错误并已修复。
我想,这意味着该错误可能是 Codenarc 警告的动机的一部分。但是,如果您使用的是受该错误影响的 Java 编译器,那么导入顺序为“错误”的任何代码都将根本无法编译……使 Codenarc 警告毫无意义。
风格问题。将只有一两个静态导入,但对引入函数名称等可理解性有很大影响。因此将它们放在顶部(用于阅读)可能被认为是好的风格。IDE 折叠“[+]”支持也可能被考虑在内。
我认为他们希望将静态导入与其他导入分开。
选择导入顺序(静态和非静态)可能会在示例中的这种边缘情况下产生问题。