2010-12-07 14 views
0

いくつかのクラスファイルに共通するコードを書くときに、ヘルパーファイルに配置する傾向があります。ヘルパークラスとユニットテスト

ヘルパーまたはユーティリティクラスは、必要なクラスに注入する必要がありますか?それとも、単に「作曲」という言葉を引用するだけの方がいいですか?

よろしくお願いいたします。

答えて

0

静的なクラスであるユーティリティクラスにしてください。

依存関係は特定のクラスと密接に関係していますが、あなたのシナリオでは、ユーティリティクラスが必要です。

+0

ユーティリティとヘルパーの主な違いは何ですか? – Bill

+0

私は知っている限り、ほとんどの比較はできませんが、ユーティリティクラスは静的クラスですから、ユーティリティクラスでサブクラス化する必要はありません – TalentTuner

0

私はあなたが多少異なるヘルパークラスの味を助けない限り、注射の洗練が必要ないと言いたいと思います。私は構成が妥当だと言うでしょう。代わりにユーティリティやツールキットの静的クラスを作ることもできます。これにより、コードを少し明示的にすることができます。

2

Composition vs Inheritanceを選択する理由は、よく知られているSOLIDの原則である必要があります。そして、「相続財産を超える組成」は、IMOの結果です。

(Saurabhが言ったように)それが静的であるとき

  • IMOあなたはユーティリティクラスを持っています。
  • タスクは特定のドメインに関連していませんが、生データに関連しています(たとえば、リストを逆にするユーティリティ)。
  • その機能には副作用がありません。
  • その機能の代替実装はありません。

とにかく、C#拡張で、ユーティリティクラスを作成することはまれです。

ユーティリティクラスでは、注入する必要はありません(スタティックでテスト可能です)。代わりに、コンポジションを持っている場合、依存性の逆転の原則では、コンストラクタを抽象化するためにコンテナを残すことができるように、「抽象化ではなく抽象化に依存する」と述べています。

+0

私の場合、いくつかのメソッドはクラスの一部である可能性があります。しかし、2つまたは3つのクラスは同じメソッドを必要とし、それらのクラスはすべて同じドメインにあります。この場合、静的メソッドを使用する方が効率的ですか? C#エクステンションについては、上記のケースではなく、汎用メソッドに適していると思いますか? – Bill

+0

はい、それらのメソッドが汎用目的ではない場合、私はユーティリティクラスを行いません。むしろ、クラス内にメソッドをカプセル化します。 – onof

+1

同じメソッドを3つのクラスにコピーしますか? – Bill

関連する問題