你对代码重复感到恼火吗?


作为程序员,我们早就知道重复是编程的终极罪恶。甚至考虑复制一些东西几乎是不可想象的。

但是删除重复会引入依赖关系。如果您和我使用重用同一段代码,而不是复制它,我所做的更改可能会影响您。这种效果可以是有益的(我修复了一个您也需要修复的错误),也可以是良性的(我添加了一个您没有使用的新功能),也可以是有害的(我希望它以对您没有好处的方式工作)。

当我们有依赖关系时,我们必须考虑:“也许我不应该添加那个特性--如果破坏了别人的东西怎么办?”“该死的鱼雷,我要黑进去了!”或者“也许我会为我的改变做一个分叉,我们以后再合并”。

有时是良性的,有时是有害的。

我最近与一位朋友讨论了面对遗留代码进行创新的案例。请记住:遗留代码是您不想接触的代码,因为更改它是危险的,而且它现在会给业务带来价值。

我们希望逐步搭建一个新的平台。因此,我们似乎有两个选择:我们可以在旧平台上实现新的代码调用功能(讨厌!因为,你知道,“stop digging“)或者我们可以构建一个新服务,并将旧系统更改为使用它(天哪!因为,你知道,“改变是危险的”)。

如果我们允许新系统复制旧系统所需的功能,这种错误的二分法就会消失。

重复不是大罪。这是一个负面的属性,但在许多情况下,它可能是您最好的选择。