7

Codenarc は、Groovy コードの欠陥、悪い慣行、矛盾、スタイルの問題などを分析するフレームワークです。

このルールには理由がありますか: MisorderedStaticImports ルール:

非静的インポートの後にあるべきではない静的インポート ステートメントをチェックします。

違反の例:

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

public class MyClass{}

このルールの動機や意味がわかりません。

4

3 に答える 3

12

Marko Topolnik が言うように、インポートの順序はプログラムの意味には関係ありません。

その趣旨の明示的な声明について JLS を調べてみましたが、見つかりませんでした。また、Java チュートリアルでは、インポートの順序についても言及されていません。ただし、のセマンティクスはimport違いがないようなものです。インポートの順序が原因でインポートの結果があいまいになる可能性がある場合、JLS はそれがコンパイル エラーであると言います。

したがって、これは文体上の規則にすぎません。(実際、ルールを見ると、静的インポートを最初に置くオプションさえあります!)


アップデート

@Eugene Stepanenkov はこの Q&A を指摘しています

これは、Java 8 より前のバージョンの Oracle Java コンパイラのあいまいなバグが原因でした。(最終的に) バグとして認識され、修正されました。

つまり、このバグがCodenarc の警告の動機の一部だった可能性があるということです。ただし、バグの影響を受ける Java コンパイラを使用している場合、「間違った」順序でインポートされたコードはまったくコンパイルされず、Codenarc の警告が無意味になります。

于 2012-11-14T09:46:24.790 に答える
0

インポートの順序 (静的および非静的) を選択すると、のようなエッジ ケースで問題が発生する可能性があります。

于 2016-11-05T16:44:12.797 に答える
0

スタイルの問題。静的インポートは 1 つまたは 2 つだけですが、関数名の導入などの理解に大きな影響を与えます。したがって、それらを(読み取り用に)上部に配置することは、良いスタイルと見なされる場合があります。IDE 折りたたみ "[+]" サポートも考慮されている可能性があります。

彼らは静的インポートを他のものから分離したかったと思います。

于 2012-11-14T09:56:02.153 に答える