魔扣论坛

魔扣源码论坛业务
查看: 1267|回复: 11

程序员,千万不要重写代码

[复制链接]
  • TA的每日心情
    开心
    2018-7-11 14:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    16

    主题

    6

    回帖

    29

    积分

    魔扣新手

    Rank: 1

    魔扣币
    24
    贡献
    12
    威望
    0
    发表于 2018-8-12 22:14:02 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

      如果你跳槽、或刚接手一个新项目,面对看上去异常混乱的旧代码,请冷静下来,忍住推倒重写的冲动。

      程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。
      或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟。
      但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难
      为什么你觉得旧代码异常混乱?因为读代码更难

      这大概就是代码Reuse难以实现的原因,也可以解释为什么你组里的每个人都喜欢用不同的功能将分割的字符串转换成一个数组。比起猜测旧的功能是怎样实现的,重新写一个自己的功能要简单和有趣多了。
      作为这个公理的推论,你可以问问身边的程序员他们正在奋战的代码怎么样?“简直是一塌糊涂!”他们肯定会这样说。“我简直想推倒重来!”
      为什么认为代码这么糟糕呢?“额,看看这个功能,竟然有两页长!完全不知道这些东西为什么在这里!完全不知道这些API是干什么的。”他们会这样回答你。

      漫画:读别人代码是一种怎样的体验?
      曾经,Borland的创始人 Philippe Kahn当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码!
      但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线运行过,发现之后程序员们可能在花了好些日子才修复了这些bug。这种修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些bug修复上。
      当你决定抛弃这些旧代码从零开始的时候,你也丢掉全部前任努力的结果。
      新代码一定比旧代码好?NO,重写可能会带来更大的风险

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

      但事实上,即便重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升。因为重写用的新技术、新语言、新框架并没有给产品带来质的飞跃。
      更不用说在重写的漫长过程中可能会遇到一些意外情况,比如:
     1、缺钱:资金链的断裂

      2、缺人:核心程序员离职
      最终导致效果不佳:达不到原产品应有的所有功能和需求,白白浪费了时间和金钱,也丢掉了市场竞争力。

      所以重写代码意味着,你在把自己置身于非常危险的境地,可能几年后你也写不出比以前更好的代码。你只是花了一大笔钱把已经存在的代码又写了一遍。
      当你觉得眼前的旧代码很烂时,该怎么办?

      你觉得旧代码写的很烂,那又怎样呢?它们已经上线,已经在实际运行中经受住了考验。所以当你发现前任留下的代码乱七八糟的时候,不妨冷静下来,从以下三个方面入手理解代码、改善代码:
      1、代码的结构有问题
      如果一段网络代码突然弹出了自己的对话框,应该是UI代码需要被处理。这些问题可以被 解决掉,你要一次次小心地移动代码,重构,改变接口。还需要一位细心的工程师立马仔细地检查这些改变是否有问题,从而不打扰到其他人。事实上,甚至比较大的结构变化也可以不扔掉代码来完成。
      大牛程序员Joel Spolsky回忆说,曾经在某个项目中,他和他的团队花了好几个月重新架构在一点上:把代码动来动去、清理、创建有意义的基类,并创建了模块之间的完美接口。但是他们始终非常小心翼翼,并没有产生新的bug,也没有丢掉任何旧代码。
      2、代码的效率不高
      曾经,Netscape的渲染代码被传非常缓慢。但事实上,这只会影响该项目的一小部分,这部分是你可以优化甚至重写的。你完全不必重写全部代码。优化速度的1%工作量,会让你获得99%的爆炸性提高。
      3、代码写得很丑
      有些代码真的写的很丑,比如Joel曾参与一个项目,开始用下划线做开始的成员变量约定,但后来改用更标准的“M_”。所以一半的功能用“_”开始,一半用“M”开始,这看起来真的很丑陋。但这个问题5分钟就能解决,而不用从头开始写全部的代码。
      最后,你要记住,从头开始再写一遍并不意味着你会写出比以前更好的代码。因为你没有参与到上一个版本的创建,所以你其实根本就不算有经验。一旦你准备推倒重写,你可能会再犯一遍版本一犯过的错,甚至会产生更多的新问题。
      总结

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

                        
                            


    来源链接: http://mp.weixin.qq.com/s?__biz=MjM5MzMyNzg0MA==&mid=400918255&idx=1&sn=a5c40235a8b3101402c517b840dd359f&3rd=MzA3MDU4NTYzMw==&scene=6#rd

    该用户从未签到

    1

    主题

    237

    回帖

    475

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    237
    贡献
    237
    威望
    0
    发表于 2018-8-21 05:28:26 | 显示全部楼层
    叶子的离开,是因为风的追求还是树的不挽留?-魔扣源码论坛   

    该用户从未签到

    0

    主题

    247

    回帖

    496

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    249
    贡献
    249
    威望
    0
    发表于 2019-2-4 18:33:57 | 显示全部楼层
    友谊是纷菲春雨,滋润心田;友谊是浩瀚的海洋,博大情深;友谊是蓝天上的白云,绚丽多姿;友谊是陈年佳酿,醇香飘溢;友谊是优美的音乐,乐在其中;魔扣源码论坛愿我们的友谊长在!

    该用户从未签到

    1

    主题

    251

    回帖

    503

    积分

    高级魔扣

    Rank: 4

    魔扣币
    251
    贡献
    251
    威望
    0
    发表于 2019-2-15 21:31:59 | 显示全部楼层
    当我们感到幸福的时候,何必去想这幸福是永恒的,还是暂时的。忧虑,是幸福最大的敌人。',

    该用户从未签到

    1

    主题

    236

    回帖

    473

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    236
    贡献
    236
    威望
    0
    发表于 2019-3-11 19:47:55 来自手机 | 显示全部楼层
    男生没有主动找女生,那是说明他是真的不想理她了。女生没有主动找男生,是因为在等他找她。',

    该用户从未签到

    2

    主题

    272

    回帖

    546

    积分

    高级魔扣

    Rank: 4

    魔扣币
    272
    贡献
    272
    威望
    0
    发表于 2019-4-11 23:34:38 | 显示全部楼层
    为毛老子总也抢不到沙发?!!

    该用户从未签到

    2

    主题

    255

    回帖

    512

    积分

    高级魔扣

    Rank: 4

    魔扣币
    255
    贡献
    255
    威望
    0
    发表于 2019-5-13 11:59:52 | 显示全部楼层
    生是魔扣的人,死是魔扣的鬼,我愿为魔扣源码论坛添砖加瓦~

    该用户从未签到

    1

    主题

    250

    回帖

    501

    积分

    高级魔扣

    Rank: 4

    魔扣币
    250
    贡献
    250
    威望
    0
    发表于 2019-7-5 23:45:21 | 显示全部楼层
    呵呵。。。

    该用户从未签到

    1

    主题

    245

    回帖

    491

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    245
    贡献
    245
    威望
    0
    发表于 2019-11-14 15:39:47 | 显示全部楼层
    “归属感”是你强烈地想和他在一起,“安全感”是你觉得他强烈地想和你在一起。',

    该用户从未签到

    3

    主题

    239

    回帖

    483

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    240
    贡献
    240
    威望
    1
    发表于 2020-3-4 18:29:35 来自手机 | 显示全部楼层
    欢迎你,亲爱的朋友,欢迎您光临并留下美好的祝福。相信通过网络的交流,我们会从陌生到相识相知,不断增进彼此信任,友谊会不断加深,这是我们前世修来的缘分。让我们珍惜这份缘,魔扣源码论坛愿我们友谊永存!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表