繁体   English   中英

基本类实施注意事项

[英]Base-Class implementation considerations

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

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

开发基类是否有实际考虑?

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

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

2)在测试项目中,您可以围绕基础制作一个模拟包装器并测试该模拟。

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

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

开发基类是否有实际考虑?

多年来,我听说过两门关于这方面的流派:1)在基类中加入任何常见的东西; 2)如果它不是真正的继承者,则不要进行基类学习。 我倾向于对前者进行设计/编码,但是#2确实有其优点,因为它可以在某种程度上使设计与设计相对直观。 只是我的$ 0.02 ...

调试抽象类

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

设计类层次结构

尽管在.NET中很容易继承,但是如果您没有清晰的类层次结构,则可能很快变得难以维护。

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

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

  • 确保您的基础班有明确的责任
  • 保持较低的继承深度。
  • 倾向于组成了继承。 (使用interfaces可能是一个不错的选择)

我会创建一个模拟对象,使您可以从新摘要中继承该对象。 您甚至可以使用模拟框架来执行此操作。

随时使用它来运行您的单元测试,除非您使用Rhino Mocks(我个人最喜欢的模拟框架)之类的东西。

要调试基类,请创建派生类之一的实例,然后进行调试。

您可能还考虑创建另一个派生类,该类除了从基类继承外不执行任何操作,因此您可以对其进行测试。

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

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

您将使用从其继承的派生类对其进行调试。 调试它时,您需要记住所做的任何更改,并检查结果行为是否仍由所有派生类共享。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM