2

似たような質問が見つからなかったので、既にありましたら申し訳ありません。

私のシステムでは、システム全体で多くのタスクを容易にするために、多くの関数ライブラリが必要です。それは電子メールを検証することかもしれません。関数で実行できるのであれば、毎回完全な正規表現を記述する必要はありません。そのため、1 か所で変更を加えてエラーを修正するだけで済みます。

Files_Tools というクラスを作成するとします。

このクラスのインスタンスを、このクラスの関数を必要とするオブジェクトに依存性注入することで、両方を機能させることができます。しかし、静的関数を使用して Files_Tools クラスを作成し、スコープ解決演算子を使用してそれらにアクセスすることもできます。しかし、DI (依存性注入) に関する主な事柄の 1 つは、この種の「グローバルな使用」を避けることであることがわかりました。したがって、私の論理では、DI アプローチを採用するように指示されています。それでも、私がこのようにやっているのはまだ「正しい」とは感じていません.

だから私の質問は - システムのツールセットを作成する最も正しい方法と見なされるものは何ですか? まず、ただの関数ではなく、クラスとして作るということですか?そして、それが本当にクラスである場合、SROまたはDIを目指すべきですか?

この質問に対する決定的な答えはおそらくないことは理解していますが、私が完全に軌道から外れているのか、それとも他の多くのコーダーが行ったであろう方向に向かっているのかを知りたいです。

前もって感謝します :)

4

1 に答える 1

2

DI により、注入されたクラスに依存することなく、クラスとメソッドの単体テストが容易になります。注入されたオブジェクトをモックし、テストに応じてその戻り値を操作できます。スコープの解決により、この依存関係が残るため、テストは完全には分離されません。

私の以前のプロジェクトの多くは、そのような機能のために静的クラスを使用しており、DI を使用していなかったため、それらの単体テストを 6 年にわたって作成しようとすることは、今では非常に面倒です。

于 2012-05-19T11:10:14.373 に答える