重写代码其实就是重新开始,而且风险更大!想要推倒旧代码重写代码的程序员请注意:保持冷静,继续前进!程序员心中有一个工程师,所以当他们到一个新站点时,他们想做的第一件事就是推掉所有旧的东西,重新开始。是的,他们永远不会满足于简单的增量劳动。或许这种微妙的心理定位可以解释为什么程序员在进入新的项目组后宁愿扔掉旧代码重写也不愿修补。他们认为旧代码一团糟。但事实真的如此吗?你之所以认为旧代码一团糟,其实是由编程的一个基本规律决定的,那就是:写代码容易,读代码难。为什么你认为旧代码如此混乱?因为阅读代码比较困难。这大概就是代码Reuse难以实现的原因。这是你们小组中的每个人都喜欢将拆分后的字符串转换为具有不同功能的数组的地方。重写自己的函数比猜测旧函数是如何实现的要容易得多,也有趣得多。作为这个公理的推论,你可以问问你周围的程序员,他们正在苦苦挣扎的代码怎么样?“一团糟!”他们肯定会说。“我要重新发明轮子!”为什么你认为代码如此糟糕?“呃,看看这个功能,有两页那么长!我不知道为什么这些东西会在这里!我不知道这些API是干什么用的。”他们会这样回答你。有一次,Borland公司的创始人PhilippeKahn向记者吹嘘:QuattroPro会比MicrosoftExcel好用很多,因为它是从零开始写的,全部都是新的源代码!但是,我认为新代码比旧代码更好好代码简直荒谬。旧代码已经在运行和测试。无数的错误在被发现之前就已经存在,而程序员在发现之后可能需要几天时间才能修复它们。这个修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些错误修复上。当你决定放弃这些旧代码,从头开始时,你也失去了之前所有努力的成果。新代码一定比旧代码好?NO,重写可能会带来更大的风险。对于技术负责人来说,重写项目的代码也是一个极其艰难的决定。因为从公司层面来说,复制代码甚至会威胁到产品的市场竞争力。一旦你决定重写代码,你可能比竞争对手落后了2-3年——在软件行业,这个时间已经足够长了。你理想中的新代码会带来产品功能的提升,但实际上,即使重写后的新代码能够实现旧代码的所有功能和需求,给产品带来的市场竞争力也只是边际提升。因为用于改写的新技术、新语言、新框架并没有给产品带来质的飞跃。更不用说在漫长的改写过程中可能会遇到一些意想不到的情况,例如:缺钱:资金链断裂缺人:核心程序员的离开最终导致效果不佳:原来的所有功能产品达不到需求,浪费时间和金钱,失去市场竞争力。所以重写代码意味着你把自己置于一个非常危险的境地,你可能在几年内写不出比以前更好的代码。您只是在花一大笔钱重写已经存在的代码。当您认为您面前的旧代码很糟糕时,您会怎么做?你认为旧代码很烂,那又怎样?他们已经上线了,他们已经在现实生活中进行了测试。所以当你发现前任留下的代码乱七八糟时,不妨静下心来,从以下三个方面来理解和改进代码:01代码的机制有问题代码需要处理。这些问题是可以解决的,你得小心翼翼地搬代码、重构、改界面一次又一次。它还需要一位细心的工程师立即仔细检查更改,以免它们打扰其他人。事实上,即使是相对较大的结构更改也可以在不丢弃代码的情况下完成。大牛程序员回忆说,有一次在一个项目上,他和他的团队花了几个月的时间在一个点上重新架构:移动代码、清理、创建有意义的基类、在接口之间创建模块。但他们一直非常小心,不要产生新的错误,也不要丢失任何旧代码。02代码效率不高曾经,Netscape的渲染代码通过的很慢。但实际上,这只会影响项目的一小部分,你可以对其进行优化甚至重写。您根本不必重写所有代码。1%的速度优化工作将为您带来99%的爆炸性改进。03代码丑陋。有些代码真的很难看。比如Joel曾经参与过一个项目,开始使用下划线作为初始成员变量约定,但后来改成了更标准的“M_”。所以一半的函数以“_”开头,一半以“M”开头,看起来真的很难看。但是这个问题可以在5分钟内解决,而无需从头编写整个代码。***,你要记住,从头开始写并不意味着你会写出比以前更好的代码。由于你没有参与上一个版本的创建,所以你一点经验都没有。一旦你准备推翻重写,你可能会重蹈第一个版本的覆辙,甚至会制造出更多新的问题。100offer说:面对糟糕的旧代码,KeepCalm&CarryOn!在大型商业项目中,推倒重来是非常危险的。当然,如果你是在做实验,想着随时可以重写的新算法。如果你跳槽,或者刚接手一个新项目,面对看起来极其凌乱的旧代码,请冷静下来,忍住推倒重写的冲动,想想上面的经历。
