単一の責任原則:クラス内のすべてのパブリックメソッドはすべてのクラス依存関係を使用する必要がありますか?
次のようなクラスがあるとします。internal class SomeClass
{
IDependency _someDependency;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
}
そして、関連する機能を追加したいのですが、はその目的を達成するために別の依存関係を使用します。おそらく、次のようなものです:
internal class SomeClass
{
IDependency _someDependency;
IDependency2 _someDependency2;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
internal string OtherFunctionality_MakesUseOfIDependency2()
{
...
}
}
この新しい機能の単体テストを書く(または既存の機能に対して持っている単体テストを更新する)と、自分自身がSomeClass(SUT)私がテストしようとしている機能の特定のビットのために必要でない依存関係のためにヌルを渡している間。
これは私にとって悪い匂いのようですが、私がこの道を歩いている理由は、私が導入した新しい機能のそれぞれについて新しいクラスを作成することができたからです。これは悪いもののように思えたので、同様の機能をまとめてグループ化しようとしました。
私の質問:クラスのすべての依存関係は、すべての機能によって消費される必要がありますか?つまり、異なる機能のビットが異なる依存関係を使用する場合、これらはおそらく別々のクラスに存在するはずです。
これは依存関係が状態の概念を持たず、機能をカプセル化しているので私の問題を解決します(私はこれを私の質問 - しかしそれは当時考慮しなかった) – jpoh