基类实现注意事项

时间:2010-12-17 16:24:31

标签: c# inheritance base-class

我写了一个类做了一些事情,过了一段时间我发现许多其他类共享功能所以决定实现一个基类(C#中的抽象)并将所有共享放入其中。

由于无法实例化这样的类,那么如何调试它呢?

开发基类是否有任何实际考虑因素?

8 个答案:

答案 0 :(得分:1)

如果您需要测试它,您可以执行以下两项操作之一:

1)您可以拥有非抽象的基类,因此可以实例化基础并进行测试。

2)在你的测试项目中,你可以在基础周围做一个模拟包装并测试模拟。

答案 1 :(得分:1)

  

因为无法实例化   这样一个类然后如何调试呢?

如果您正在询问如何实际测试它(即单元测试),我通常会编写一个继承自基类的测试类并以此方式进行测试。如果您询问实际调试,那么一旦您在正在运行的应用程序中使用子类实例化它,它与任何其他类没有什么不同。这有意义吗?

  

有任何实际考虑因素   用于开发基类?

多年来,我听说过两个学派:1)基础类中常见的任何内容; 2)如果它不是真正的继承,就不要创建基类。我倾向于为前者设计/编码,但#2确实有其优点,因为它可以在某种程度上使设计计数器直观。只是我的0.02美元......

答案 2 :(得分:1)

调试抽象类

没有什么能阻止您调试抽象类,在调试子类时,调试器会根据需要自动将您重定向到父类的实现。

设计类层次结构

虽然在.NET中继承很简单,但如果没有明确的类层次结构,很快就会难以维护。

继承并不是确保在OO中重复使用的唯一方法。

可能有所帮助的一些建议:

  • 确保您的基础课程有明确的责任
  • 保持低继承的深度。
  • 倾向于支持composition继承。 (使用interfaces可能是一个不错的选择)

答案 3 :(得分:0)

我会创建一个模拟对象来继承新的抽象。您甚至可以使用模拟框架来执行此操作。

保持手头运行你的单元测试,除非你使用像Rhino Mocks(我个人最喜欢的模拟框架)这样的东西。

答案 4 :(得分:0)

要调试基类,请创建一个派生类的实例并通过它进行调试。

你也可以考虑创建另一个派生类,除了从基类继承之外什么都不做,所以你可以测试它。

答案 5 :(得分:0)

首先,它不需要是抽象的类继承它,如果它不是抽象的,你可以实例化它。否则只需在具体实现中调试它

答案 6 :(得分:0)

您可以在测试夹具组件中创建派生版本(我假设您是单元测试基础,因此需要单独实例化它),仅用于测试基类的功能。派生版本将提供测试基础所需的任何其他基础结构。您可以决定创建几个派生版本来测试抽象基础的不同方面。

答案 7 :(得分:0)

您可以使用从中继承的派生类来调试它。在调试时,您需要记住所做的任何更改,并检查所有派生类是否仍然共享所得到的行为。