Avatar
Avatar
koher
Storeが利用しないprotocolの群も含める事になるのが好ましくなさそう
これは理想的にはそうですが、アプリ開発の現実としては、厳密に必要な依存だけ注入していると面倒なことになりがちじゃないですか?型パラインジェクションするかコンストラクタインジェクションするかに限らず。 たとえば、 FooRepository を使う Container1 があったとして、仕様変更になったときに BarRepository も必要になったら、たとえコンストラクタインジェクションしててもコンストラクタ(イニシャライザ)の引数を増やさないといけないですよね? final class Container1 { - init(fooRepository: any FooRespository) { + init(fooRepository: any FooRespository, barRepository: any BarRepository) { そうなると、 Container1 の利用箇所に問題が波及しますし、もし Container2Container1 をイニシャライズするような場合、 Container2 のイニシャライザにも影響が出たりしませんか? final class Container2 { - init(fooRepository: any FooRespository) { + init(fooRepository: any FooRespository, barRepository: any BarRepository) { self.fooRepository = fooRepository + self.barRepository = barRepository - self.container1 = Container1(fooRepository: fooRepository) + self.container1 = Container1(fooRepository: fooRepository, barRepository: barRepository) なので、ある程度広めにまとめて多少利用しないものが入っても気にしないようにしており、そうすると(型パラインジェクションする場合でも)DIのための型パラは大抵一つにおさまるので、そこまで型パラが問題になることは多くないのではないかと思います。
(edited)
アプリだとわかんないですが、サーバサイドでは不要な依存が1つでも多く持ち込まれているためにテストを書く手間が増えたりするので、
Storeが利用しないprotocolの群も含める
はかなり避けたい寄りですね