[英]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.