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