这是一个 C# 问题,但实际上可能与语言无关
我继承了一个大型对象模型(100多种类型),具有“拥有”0..n个共享基础的其他类型对象的对象层次结构(其中存在“相对”严格的类型层次结构) .
我想开始通过继承来解耦这些对象,以组合一个基于 IoC 的系统,开始实现一些比当前存在更深入的单元测试。
最好从哪里开始?
我可以从层次结构的顶部开始,这很简单,但最初的好处最少,而且在我进一步深入链条之前会很死记硬背,但这需要我在基本对象来重载函数签名以接受基本接口(interface),直到我获得完全覆盖。
我可以从层次结构的底部开始,这会更棘手,因为那里的类之间有更多的交互,但会“迫使”我们对重构采取更全面的看法。
我还可以从基础对象(所有对象都继承自的对象)开始,这将在逻辑点开始进程,但几乎肯定会创建一个无法编译的应用程序,直到我们交换所有对象继承和函数调用。
有什么想法吗?
最佳答案
如果你能在合理的时间内完成整个过程,那就从基础开始,完成整个过程;在您完成之前该应用程序将被破坏
如果您必须同时保持应用程序正常运行,请从顶部开始,一次向下处理几个类
我也会考虑自下而上的视角,但怀疑这是否是一种实用的实现方法,因为它可能会破坏一切,并且比其他两种方法需要更长的时间,但您的里程可能会有所不同;-)
基本问题是:
- 每种方法需要多长时间?
- 每种策略最终都会产生相同的最终代码吗?
- 在转型完成期间保持应用正常运行有多重要?
- 您是否有足够的单元测试来信任大规模重构?
关于.net - 开始解耦对象的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/342949/