私のチームは、自作の DI コンテナーを使用して PHP プロジェクトに依存性注入を実装することで混乱しています。DI の最初のイテレーションはおそらく極端に行われ、それらに依存するクラスに例外が注入されています。
これは良い習慣ですか、それともやり過ぎですか?
私のチームは、自作の DI コンテナーを使用して PHP プロジェクトに依存性注入を実装することで混乱しています。DI の最初のイテレーションはおそらく極端に行われ、それらに依存するクラスに例外が注入されています。
これは良い習慣ですか、それともやり過ぎですか?
依存性注入の目的は、構成または共同動作を容易にするためにオブジェクトによって使用される共同作業者である依存性を取得する責任を逆転させることです。
一般に、例外は特定のクラスのコントラクトに固有のものです。つまり、例外は、障害が発生した場合にコンポーネントがどのように動作するかに関する暗黙的または明示的な契約の一部であるため、派生物に切り替えられることはありません。また、通常、イベントには動作がないため、テストを分離する目的でイベントを抽象化しても特に価値はありません。さらに、イベントは通常、障害状態またはイベントのみを表すため、例外の派生物を挿入できることも特に価値がありません。コンポーネントのコンシューマーは、基本例外契約に対してコーディングする必要があるためです (つまり、追加のプロパティはそうではありません)。見られる)。
ロギング、ラッピングなどの後に例外を再スローする例外処理コンポーネントの設計や、例外の構築自体が達成するために外部リソースを必要とする場合など、例外を挿入したい正当な理由がいくつかあるかもしれません。(その必要性自体が私を一時停止させますが)、しかし一般的に、コンポーネントがその障害状態をコンポーネント自体から報告する方法を分離する必要があるとは言いません。
それは少しやり過ぎのように聞こえます。
例外がスローされると、そのメッセージと型を通じて何らかの有用な情報が提供されるはずです。
使用する Exception クラスを注入している場合、それは Exception の型が、実際に何が問題であるかを調べるのにもはや役に立たないことを意味します (注入してから型がわかっているため)。