当前位置:首页程序员,为什么千不要重写代码? 读别人代码是一种怎样的体验 举报文章

程序员,为什么千不要重写代码? 读别人代码是一种怎样的体验

作者:admin    来源:用户投稿    时间:2015.7.25   

  作为 100offer 程序员拍卖的运营,我们常常和用户交流讨论,有一个话题经久不衰:程序员入职新公司后接手已有的代码,怎么处理?

  程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。

  或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟。

  但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难。

  为什么你觉得旧代码异常混乱?因为读代码更难

  这大概就是代码Reuse难以实现的原因,也可以解释为什么你组里的每个人都喜欢用不同的功能将分割的字符串转换成一个数组。比起猜测旧的功能是怎样实现的,重新写一个自己的功能要简单和有趣多了。

  作为这个公理的推论,你可以问问身边的程序员他们正在奋战的代码怎么样?“简直是一塌糊涂!”他们肯定会这样说。“我简直想推倒重来!”

  为什么认为代码这么糟糕呢?“额,看看这个功能,竟然有两页长!完全不知道这些东西为什么在这里!完全不知道这些API是干什么的。”他们会这样回答你。

  

06648d915928e59e7221266d7cc31e9f_r.jpg

  漫画:读别人代码是一种怎样的体验?

  曾经,Borland的创始人 Philippe Kahn当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码!

  但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线运行过,发现之后程序员们可能在花了好些日子才修复了这些bug。这种修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些bug修复上。

  当你决定抛弃这些旧代码从零开始的时候,你也丢掉全部前任努力的结果。

  新代码一定比旧代码好?NO,重写可能会带来更大的风险

  对技术领导者来说,重写项目的代码也是一个异常艰难的决定。因为从公司层面说,重现代码甚至会威胁产品的市场竞争力。一旦决定重写代码,那么与竞品相比,你可能落后了2~3年——在软件行业,这时间可够长的。

  你理想中的新代码会带来产品功能的提升▼

  

2.jpg

  但事实上,即便重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升。因为重写用的新技术、新语言、新框架并没有给产品带来质的飞跃。

  更不用说在重写的漫长过程中可能会遇到一些意外情况,比如:

  1、缺钱:资金链的断裂

  

3.jpg

  2、缺人:核心程序员离职

  最终导致效果不佳:达不到原产品应有的所有功能和需求,白白浪费了时间和金钱,也丢掉了市场竞争力。

  

4.jpg

  所以重写代码意味着,你在把自己置身于非常危险的境地,可能几年后你也写不出比以前更好的代码。你只是花了一大笔钱把已经存在的代码又写了一遍。

  当你觉得眼前的旧代码很烂时,该怎么办?

  你觉得旧代码写的很烂,那又怎样呢?它们已经上线,已经在实际运行中经受住了考验。所以当你发现前任留下的代码乱七八糟的时候,不妨冷静下来,从以下三个方面入手理解代码、改善代码:

  1、代码的结构有问题

  如果一段网络代码突然弹出了自己的对话框,应该是UI代码需要被处理。这些问题可以被解决掉,你要一次次小心地移动代码,重构,改变接口。还需要一位细心的工程师立马仔细地检查这些改变是否有问题,从而不打扰到其他人。事实上,甚至比较大的结构变化也可以不扔掉代码来完成。

  大牛程序员Joel Spolsky回忆说,曾经在某个项目中,他和他的团队花了好几个月重新架构在一点上:把代码动来动去、清理、创建有意义的基类,并创建了模块之间的完美接口。但是他们始终非常小心翼翼,并没有产生新的bug,也没有丢掉任何旧代码。

  2、代码的效率不高

  曾经,Netscape的渲染代码被传非常缓慢。但事实上,这只会影响该项目的一小部分,这部分是你可以优化甚至重写的。你完全不必重写全部代码。优化速度的1%工作量,会让你获得99%的爆炸性提高。

  3、代码写得很丑

  有些代码真的写的很丑,比如Joel曾参与一个项目,开始用下划线做开始的成员变量约定,但后来改用更标准的“M_”。所以一半的功能用“_”开始,一半用“M”开始,这看起来真的很丑陋。但这个问题5分钟就能解决,而不用从头开始写全部的代码。

  最后,你要记住,从头开始再写一遍并不意味着你会写出比以前更好的代码。因为你没有参与到上一个版本的创建,所以你其实根本就不算有经验。一旦你准备推倒重写,你可能会再犯一遍版本一犯过的错,甚至会产生更多的新问题。

  总结

  面对糟糕的旧代码,Keep Calm & Carry On!

  在大型商业项目中,推倒重来是非常危险的行为。当然,如果你是在做实验,想到新算法可以随时重写。如果你跳槽、或刚接手一个新项目,面对看上去异常混乱的旧代码,请冷静下来,忍住推倒重写的冲动,想想上面这些经验之谈。

  本文为 100offer 程序员拍卖原创,首发于 100offer 微信(ID: im100offer)及博客:http://100offer.com/blog/posts/85

好文打赏,给Ta鼓励
扫一扫用手机阅读本文
  • 相关搜索
图片推荐
    对于企业网站建设来说 哪些内容是必不可少的“干货”

    对于企业网站建设来说 哪些内容是必不可少的“干货”

    什么样的内容是企业网站必不可少呢?这对企业网站来说,是最核心的内容,如果用传统思维来说,可能这种认知会有所偏差,毕竟互联网的营销推广和传统营销渠道比较,有着许多不同的地方。    什么是干货呢?在互联
    讲故事不讲广告,现象级真人秀背后的别样跨界

    讲故事不讲广告,现象级真人秀背后的别样跨界

    当下的中国正迎来一股综艺爆发潮。  最近几年来,融合了真人秀的综艺栏目火爆起来,不仅收视率连创新高,而且也得到了品牌商家的青睐。但是,要想做好一次成功的综艺节目跨界营销却不容易,并非投了广告费,摆上产
    网站建设的同时也能向客户“取经”?

    网站建设的同时也能向客户“取经”?

    小编最近和几个同事一起,在一家客户集团总部给他们做网站建设服务。成都数字立方作为创业型网络建设公司,此次为了确保客户网站建设高质量完成,特地让我们几位同事前往客户所在总部,同客户自有网络部门携手一起完
    谈新生代草根站长创业

    谈新生代草根站长创业

    我不知道像我这样并不成功的个人站长是否有资格谈创业,正如我不知道为什么要写下本文谈论我对于新生代草根站长创业的看法。世间上的很多事本没有绝对的正确与否,本文所讲述的一切均为袁程旭个人观点,如有不恰当之
    让广告硬起来的秘诀 就是让文软下去

    让广告硬起来的秘诀 就是让文软下去

    '如今,面对泛滥成灾的广告,大多数受众表现出赤裸裸的抵触,尤其是直接宣传产品的纯广告。这些传统的硬广,带有强制、反复的传播性质,受众往往处于被动接受状态,极易产生厌恶情绪,'买会员去广告'就是这么个理
    如何利用百度统计提升网站用户体验

    如何利用百度统计提升网站用户体验

    用户体验是转化最基础也是最核心的因素之一,那么想方设法提高用户体验就至关重要了。今天易科seo就跟大家分享一下,如果用百度统计实战提升用户体验提高转化率。  百度统计有很多给力的功能方便我们提升网站的
    “文人”陈年与“戏子”周杰伦

    “文人”陈年与“戏子”周杰伦

    在电商圈里,似乎除了每年刷新纪录的双11以及有关东哥与奶茶妹妹的娱乐新闻,能够溅起几朵舆论浪花之外,其他时间便都处于沉寂的状态。不过,这样安静的局面最近却被陈年的那张嘴打破。  5月19日,凡客创始人
    中美日美女机器人大比拼,单身狗们喜欢哪款呢?

    中美日美女机器人大比拼,单身狗们喜欢哪款呢?

    随着时代的发展,人工智能的发展也十分迅速。美女机器人做得已经越来越逼真,所拥有的功能也越来越全面。而说到世界最先进的机器人,便不得不说说中美日的美女机器人了。中国、美国和日本一直都在致力于机器人方面的
你是怎么知道非凡网赚网的?
  •   
  • 联系QQ 邮箱:976382653@qq.com 微信:976382653
    在线留言
    发布软文
    广告自助购
    文章调用
    常见问题
    保存到桌面