0

私は何かをするためのクラスを作成しましたが、しばらくすると、他の多くのクラスが機能を共有していることがわかったので、基本クラス(C#で抽象化)を実装し、すべてを共有することにしました。

そのようなクラスをインスタンス化することはできないので、それをデバッグする方法は?

基本クラスを開発するための実際的な考慮事項はありますか?

4

8 に答える 8

1

抽象クラスのデバッグ

抽象クラスのデバッグを妨げるものは何もありません。子クラスをデバッグするときに、デバッガーは必要に応じて親クラスの実装に自動的にリダイレクトします。

クラス階層の設計

.NETで継承するのは簡単ですが、明確なクラス階層がないと、保守がすぐに難しくなる可能性があります。

継承は、OOでの再利用を確実にする唯一の方法ではありません。

役立つ可能性のあるいくつかの推奨事項:

  • ベースクラスに明確な責任があることを確認してください
  • 継承の深さを低く保ちます。
  • 継承よりも構成を好む傾向があります。(使用interfacesするのが良い選択かもしれません)
于 2010-12-17T16:34:13.113 に答える
1

テストする必要がある場合は、次の2つのいずれかを実行できます。

1)抽象的ではない基本クラスを持つことができるので、基本をインスタンス化してテストすることができます。

2)テストプロジェクトでは、ベースの周りにモックラッパーを作成し、モックをテストできます。

于 2010-12-17T16:29:56.873 に答える
1

そのようなクラスをインスタンス化することはできないので、それをデバッグする方法は?

それを実際にテストする方法(つまり単体テスト)を尋ねている場合、私は通常、基本クラスから継承するテストクラスを作成し、その方法でテストします。実際にデバッグすることについて質問している場合は、実行中のアプリケーションで子クラスを使用してインスタンス化すると、他のクラスと何ら変わりはありません。それは理にかなっていますか?

基本クラスを開発するための実際的な考慮事項はありますか?

何年にもわたって、私はこれについて2つの学校を聞いてきました:1)基本クラスに入れられる一般的なものと2)それが真の継承でない場合は基本クラスを作成しないでください。私は前者に合わせてデザイン/コーディングする傾向がありますが、#2には、デザインカウンターをある程度直感的にすることができるというメリットがあります。ちょうど私の0.02ドル...

于 2010-12-17T16:31:46.117 に答える
0

新しい抽象から継承するために作成するモックオブジェクトを作成します。これを行うために、モックフレームワークを使用することもできます。

Rhino Mocks(私の個人的なお気に入りのモックフレームワーク)のようなものを使用しない限り、ユニットテストを実行するために手元に置いておきます。

于 2010-12-17T16:27:52.960 に答える
0

基本クラスをデバッグするには、派生クラスの1つのインスタンスを作成し、それを介してデバッグします。

また、テストできるように、基本クラスから継承する以外は何もしない別の派生クラスを作成することを検討することもできます。

于 2010-12-17T16:28:43.600 に答える
0

まず、クラスが継承するために抽象的である必要はありません。抽象的でない場合は、インスタンス化できます。それ以外の場合は、具体的な実装内でフォームをデバッグするだけです

于 2010-12-17T16:29:08.147 に答える
0

基本クラスの機能をテストする目的で、テストフィクスチャアセンブリに派生バージョンを作成できます(ベースを単体テストしていると想定しているため、個別にインスタンス化する必要があります)。派生バージョンは、ベースのテストに必要な追加のインフラストラクチャを提供します。抽象ベースのさまざまな側面をテストするために、いくつかの派生バージョンを作成することを決定できます。

于 2010-12-17T16:29:11.867 に答える
0

継承する派生クラスを使用してデバッグします。デバッグするときは、行った変更を念頭に置いて、結果の動作がすべての派生クラスで共有されているかどうかを確認する必要があります。

于 2010-12-17T16:29:26.500 に答える