私は、頻繁に再利用されるプロセス(つまり、特定のページへのアクセス、特定のフィールドへの入力など)を含むHelper
クラスを使用する多数のSeleniumテストクラスを作成しています。
現在、これらのHelper
クラスは、すべてのテストクラスが拡張するBasicTest
クラスにインスタンス化されています。
依存関係注入を使用してHelper
classesをインスタンス化することを考えていましたが、この場合、それが適切かどうかわかりません。私は各Helper
クラスの定義が1つしかないことを知っているので、依存性注入でそれらをインスタンス化することはまだプラスでしょうか、それとも理由もなくプロジェクトを複雑にする無意味な作業でしょうか?
それがベストプラクティスであることはご存知のようですが、努力する価値があるかどうかはわかりません。
DIとあなたのケースの詳細を残して、ここに私の「私はそれに悩まされるべきか?」ルール、または略してSIBWI。
ほとんどの場合、答えは
そして私はベストプラクティスに従います
依存性注入を使用する理由は、ソフトウェアの再利用と拡張性を促進するためです。引数がインターフェイスであるクラスメソッドがある場合、「特定のインスタンスがこのインターフェイスを実装している限り、何でも与えてください」と世界に伝えています。
ただし、コードが1つのタイプの実装で確実に機能するように作成されている場合(つまり、クラスがヘルパーの実装を1つだけ期待している場合は、常に)、代わりに引数を実装クラスタイプに変更することを検討してください。
しかし、インターフェースではなく実装に合わせてプログラムを作成すると、この決定に拘束されることになります。
つまり、特に新しいAPIを設計するときは、メソッドシグネチャを慎重に検討してください。これらが定義されると、クライアントによってこのように機能することが期待されます。
APIが変更されたという理由だけでクライアントがコードを変更することを期待することは悪いことです(残念ながら、それは頻繁に発生します)