我确信这个反模式在某处有个名字。但是,我对反模式文献还不了解。
请考虑以下情形:
or0
是类中的成员函数。不管好坏,它在很大程度上取决于类成员变量。程序员A随之出现,并且需要一些功能,例如or0
而不是调用or0
,程序员A复制并重命名整个类。我猜她不会打电话,or0
因为正如我所说,它在很大程度上取决于成员变量的功能。或者,也许她是一个初级程序员,不知道如何从其他代码中调用它。因此,现在我们有了or0
和c0
(c为副本)。对于这种方法,我不能完全责怪程序员A -我们都在紧迫的期限内完成工作,并且我们乱砍代码以完成工作。
一些程序员or0
对此进行了维护,使其成为当前版本orN
。 c0
现在是版本cN
。不幸的是,维护类包含的大多数程序员or0
似乎完全不知道-这c0
是DRY原则的智慧中我能想到的最有力的论据之一。并且可能还已经独立维护了中的代码c
。看来无论哪种方式,or0
并c0
维持相互独立的。而且,喜悦和幸福是错误的发生,cN
而不会发生orN
。
所以我有几个问题:
1.)此反模式有名称吗?我经常看到这种情况发生,我很难相信这不是一种命名的反模式。
2.)我可以看到一些替代方法:
a。)修复orN
一个参数,该参数指定了所需的所有成员变量的值。然后修改cN
以调用orN
所有传入的所需参数。
b。)尝试手动将修补程序从移植orN
到cN
。(请记住,我不想这样做,但这是现实的可能性。)
c。)再一次复制orN
到cN
--yuck,但是出于完整性考虑,我列出了它。
d。)尝试找出cN
损坏的地方,然后独立于对其进行维修orN
。
从长远来看,替代a似乎是最好的解决方案,但我怀疑客户会允许我实施它。从来没有时间或金钱来解决问题,而是总是花费时间和金钱来解决同一问题40或50次,对吗?
有人可以建议我可能没有考虑过的其他方法吗?