干过几年程序员的小伙伴估计都遇到过这样的情况:接手别人留下来的代码,感觉像一坨翔,惨不忍睹。
程序员都有一颗工程师的心,所以当我们到接手一个已经在运行的项目的时候,想做的第一件事就是:将旧的一切推倒重来。
我们决不会满足于简单的维护前任留下来的代码的工作。 或许这种微妙的心理可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,因为他们认为旧代码简直一坨翔。
但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难。
比起猜测旧的功能是怎样实现的?为什么要写成这样?自己动手重新写一个可能要更简单和更有成就感。
曾经,Borland的创始人当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码!
但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线运行过,发现之后程序员们可能在花了好些日子才修复了这些bug。这种修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些bug修复上。 当你决定抛弃这些旧代码从零开始的时候,你也丢掉全部前任努力的结果。
重写可能会带来更大的风险,重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升,不见得会带来多大的好处,仅仅是因为你不愿意维护前任留下来的代码罢了。
重写采用的新技术、新语言、新框架并不一定会给产品带来更高的效益,相反,你如果是hold不住新技术,新框架的话,可能会给自己和团队挖坑。 更不用说在重写的漫长过程中花费大量的人力物力和时间,甚至可能会引发其他的bug,导致影响了产品的正常运行,影响公司的收益,这些风险也是极高的。
所以,若非足够的必要,不要轻易重写代码。