5


時が経つにつれて、より複雑で単純なタスクのために、Java プロジェクトに多くのユーティリティ メソッドが導入されています。

静的メソッドを使用する場合、コードに密結合が導入され、特にユーティリティ メソッドが非常に複雑な場合、コードのテストがより困難になります。

これらのユーティリティの管理とテストが今では難しいと考えているだけです。これらのユーティリティ メソッドを回避する方法と、既存のプロジェクトを整理してすべての STATIC ユーティリティを削除する方法を教えてください。

静的メソッドを避けるのを手伝ってくれませんか?

4

4 に答える 4

6

静的メソッドがたくさんあっても問題ありません。

静的メソッドは stateless です (または、読み進める必要があります)ステートレスであるため、テストが最も簡単なメソッドになります。セットアップはなく、呼び出すだけです。

対処する状態がないため、モックは必要ありません。

ステートレスであることに関しては、技術的に静的メソッドは、静的変数を使用して状態を格納する場合、ステートフルにすることができます。この場合、優れた設計の観点から、必要に応じてシングルトン パターンを使用して、インスタンス変数を使用して状態を格納するインスタンス メソッドに変換する必要があります。

于 2013-06-29T13:26:53.910 に答える
1

静的ユーティリティ メソッドはそれほど悪くありません。静的呼び出しの背後にパッケージ プライベート戦略を隠すことができます。テストケースが同じパッケージに属していれば、これは簡単にテスト (および置換) できます。さらに、コードが非常に読みやすくなります。もちろん、静的ユーティリティ メソッドのクライアントは、テストで 1 つの実装しか使用できません。したがって、ここにいくつかの柔軟性がありません。

状態について話すとき、ボヘミアンは正しいです。静的ユーティリティに状態がある場合、何か間違ったことをしています。

あなたの質問について: 静的メソッドを避けたい場合は、Spring フレームワークを使用して、さまざまなコンテキストで使用およびテストするユーティリティのさまざまな実装を定義できます。ただし、この場合、ユーティリティオブジェクトを認識しているコンテキストへの参照を最初に取得する必要があるため、これらのオブジェクトへのアクセスはあまり便利ではありません。

于 2013-06-29T13:26:37.120 に答える