题
是否有将扩大面向对象的代码,因此没有分享任何类型的工具?例如,如果我有两个类A和B继承C,则该工具将调整类A和B不再使用C.这也将是很好,如果工具这样做,它仍然编译并产生相同的结果。我认为主要困难是调整任何条件逻辑如果类型是动态检查。
我知道这是从机械角度来看完全没有意义的,但是这将是一个有趣的学术活动。
解决方案
虽然有各种各样的重构工具,在那里,我怀疑你的问题,因为这将需要大量的背景知识和人为干预来执行一种自动操作的实际应用。
在您的例子,它不只是足够的A和B获得缺失了C的方法和属性,但事实上,在许多情况下,也有要手A(或B)的方法,并像对待地方一C.或者,你可能希望把它交给一些需要C,但有一个(或B的)具体行为调用---想象的集合调用.DoThing()上的任何对象是这里面。
您不得不不仅相隔类的胸围,但拥有所有类型的其他重载函数有很多冗余的代码看(尤其是对于类型,而不仅仅是行为)。
我说,而一个有趣的思想实验,也许我们应该将它放在坏主意堆。我怀疑这将有助于提高可读性,可扩展性和性能。
其他提示
这里的问题是,其采用C而不是代码或B是难以对付:
public void workWithSomeC( C useThis ) { ... }
在我们的面向对象的代码,我们可以通过其中的A或B,以该功能。不能这样做,如果A和B不再有什么共同点。
我想通过复制这样的代码什么工作可以做,但好伤心什么可怕的念头; - )
不隶属于 StackOverflow