これは説明するのが難しい質問になるでしょうが、ここに行きます。
Delphi Spring Framework を使用しています。(http://code.google.com/p/delphi-spring-framework/)
ClassA によって実装される InterfaceA を宣言する UnitA があるとします。
同様に、ClassB によって実装される InterfaceB を宣言する UnitB があります。
どちらも、インターフェースとクラスをそれぞれの初期化セクションで Spring Container に登録しました。
InterfaceA は InterfaceB に依存していますが、Spring を使用しているため、UnitA の節には UnitB がありませんuses
。言い換えれば、私たちは仕事を終えました.UnitAとUnitBを切り離しましたが、InterfaceAをInterfaceBに依存させることができます。
ただし、上記のシナリオでは、依存関係を解決できるように、UnitA と UnitB の両方がプロジェクトに含まれていることを確認する必要があります。
ここで、新しいプロジェクトを開始すると想像してください。その新しいプロジェクトは UnitA を使用していますが、開発者は、UnitA を使用する場合はプロジェクトに UnitB も含める必要があることに気づいていません。依存関係はコンパイル時ではなく実行時に解決されるため、コンパイラ エラーは発生しません。
そして、ここに問題があります: アプリが展開される前に、この UnitB への依存関係が確実に認識されるようにする正しい方法は何ですか?
複雑なアプリでは、徹底的なテストにもかかわらず、特定のコード パスがおそらく長時間実行されず、この不足している依存関係がデプロイ前に発見されない状況が予測できます。
各インターフェイス解決呼び出しにRequires
、起動時にチェックして例外を発生させる呼び出しが付随するシステムを実装しました。これにより、エラーが確実に表示されます。しかし、これを検出するか、この問題に対処するための「ベスト プラクティス」または標準的な方法があるかどうか疑問に思っています。
追加: これは Java や他の言語の問題ですか?