すなわち。GUI パッケージと Logic パッケージがあります。
Logic クラスが GUI クラスをインポートしないようにするにはどうすればよいですか? 同じプロジェクトに取り組んでいる他の人 (または私自身) がそれを行う可能性がありますが、これは防止したいと考えています。
解決策は、たとえば、JUnit でのチェックであり、完了した場合に失敗するか、例外をスローするランタイム チェックです。これらの線に沿った何かですが、それを行う方法は?
すなわち。GUI パッケージと Logic パッケージがあります。
Logic クラスが GUI クラスをインポートしないようにするにはどうすればよいですか? 同じプロジェクトに取り組んでいる他の人 (または私自身) がそれを行う可能性がありますが、これは防止したいと考えています。
解決策は、たとえば、JUnit でのチェックであり、完了した場合に失敗するか、例外をスローするランタイム チェックです。これらの線に沿った何かですが、それを行う方法は?
JDepend または DependencyFinder またはDegraphを使用して、このようなテストを作成できます。
Degraph は、このような場合のテストを実際に作成することを明示的に意図している 3 つのツールの中で唯一のものです。また、AFAIK JDepend は、最近の Java バージョン (注釈で言及されているクラスなど) のすべての依存関係を見つけるわけではありません。
私は Degraph の作成者なので、明らかに偏見があります。
JabSawプロジェクトを作成しました 。注釈付きクラスを使用してモジュールを定義し、モジュール間の関係を表現できます。デフォルトでは、モジュールにはすべてのクラスが 1 つのパッケージに含まれています。制限は、Maven プラグインを使用して、コマンド ラインまたは単体テストから確認できます。これで問題が解決するはずです。
私の頭に浮かぶ解決策の 1 つは、GUI クラス パッケージを非公開にすることです。1 つのパッケージだけを分離して言うことはできませんが、Logic クラスだけは GUI を使用できず、他のパッケージは使用できます。