打补丁的结果


(原文发表于Live Spaces,固定链接)

今天真正领会到了什么叫改一个bug会带来三个新bug了。最近我们在做的DVD解码器被客户发现的bug越来越多。我本不是负责解码的,不过因为我负责的那一块儿已经比较成熟了,于是就被分到解码器这边来帮忙。接到手的是三个很相似的bug。仔细研究后发现,原本只是一个bug,不过某人修改完之后就变成了三个——原本的bug没有解决,又出现了两个新bug。

调试了整整两个下午,终于弄出一点点眉目了。我发现,原来的那个bug的起因并不是很容易解决,因此修改这个bug的人就没有着手从根本上去解决问题,而是采取了补的方式——这个地方出错了,就在别的地方添一些代码将错误遮盖过去,而遮盖的代码又出现了问题,于是再写些新的代码去遮盖新出现的问题——结果当然是bug越来越多。真受不了!看来基本上我得重新改写这些代码才行。