你的代码写的很烂

我有一个很熟的朋友,他现在忙的不可开交。他手上有一大堆没有完成的合同,而且一个跟他一起开发的助手也离他而去。于是,在三个大客户的催命鬼时的督促下,他已经连续好几个星期没休息了。

其中有个客户跟他讨论他给这个客户做的iPad应用程序,客户告诉他“我们花钱雇了另外一个程序员来审查你的代码,他说你的代码写的很烂。”

当他告诉我这个故事时,我只是微微一笑,想起了我以前是怎么唾弃别人的代码的。当我刚开始编程时,我看到过一段程序,我认为那是毋庸置疑的写的很烂的,我删掉了那段代码,用自己认为更好的方面重新写了一遍。当我变成的成熟后,我回头再看,发现我所删掉的那段代码其实是用了一个很好的设计模式,而我重写的确是丑陋无比。

我就这样被上了一课。

之后的日子里,我经常会遇到我认为是丑的不能再丑的代码。尽管如此,我也不通篇否定它们了,我只会在其中找一些特别的无法容忍的部分重新编写。可10次中有9次,当我快要完成时,我发现了一个问题使我不得不对自己说“哦,怪不得他们要写成这样了”,然后把代码恢复成原样,或也使用同样“丑的不能再丑”方式完成它。

现在我变的更成熟了,我可以充满自信的告诉你,我再也不会看着别人编的代码说“哦,这代码很烂”了。我知道,在没有了解整个程序的解决方案之前,你不可能就那么轻易的判断代码的好和坏。真的,有时候它看起来很傻,或完成的不好,或没有文档标注(我的意思是自我注释),然而,你根本就不可能知道程序员在写这段代码时脑袋里是怎么思考的。更多的情况是,他们要选择这样做是有一定的理由的,除非去深入的研究它们,你不可能再有其他简单快速的方法来理解程序的上下文环境。

所以,每当听到有人看着别人的代码说很烂时,我只会微微一笑,让我想起我当年的天真和盲目自信。的确,我以前坚信自己是个出色的开发人员,坚信知道每种算法的最优设计。我很想念当时的自大,但是我很高兴现在学到的这些理念,我知道,我唯一能鄙视的代码只能是我自己的代码,鄙视的原因就是我不能使它变的更好。

[英文原文:LINK ]
分享这篇文章:

53 Responses to 你的代码写的很烂

  1. jackie says:

    很有感触啊。。。。

  2. tony says:

    是啊,收益很大

  3. 确实是,博主写得比较深刻。

  4. 奶茶加盟 says:

    呵呵,收益不错啊

  5. benxiaohaihh says:

    很有感触

  6. 大方 says:

    严以律已,宽以待人!

  7. 老康 says:

    嗯。很有道理啊!
    学习学习设计模式!

  8. gcyy0106 says:

    很好,很会自我反省,顶!

  9. 大道达人 says:

    严以律已,宽以待人!

  10. Mr_Xu says:

    学习了~!

  11. Fountain says:

    嗯~~确实是这样啊~~做一段时间后去思考一下就会发现自己写的代码其实很烂呢~~以前也遇到过看到别人的代码以为他的很烂,结果自己写起来一样烂~~

  12. 泥菩萨 says:

    不知道是没有上线通过审核还是删了评论?我的字不是广告,不是垃圾。好像都是个人感受。
    我是否误会?

  13. Linkjun says:

    不错,值得谨记的文章。

  14. 汤怀 says:

    仿佛就是现在的我。。

  15. chen-xiao says:

    我唯一能鄙视的代码只能是我自己的代码,我唯一能鄙视的人也只能是自己。

  16. kapa says:

    ~深有同感~ 曾有过类似经历的说

  17. 景笑 says:

    好作品!
    特别好的一句:“除非去深入的研究它们,你不可能再有其他简单快速的方法来理解程序的上下文环境。”

  18. 吴建军 says:

    深有感触,原来看到以前的代码很乱,想改但没敢动手,后来某同事给改了,然后被问题折磨好几天后还原到了原来的版本。。。

  19. 我通常会想他为什么会这么写?大家都是程序员,这样写肯定有他的道理,只是可能我不知道而已

  20. 张默 says:

    能谈谈吗?我们团队缺少一位 IOS开发的人员 我电话 130-1123-4576

  21. fangjian says:

    存在即合理,有时也不合理(属于突变品种),总之林子大了啥都有。。。

  22. hax says:

    又一碗专供程序员的心灵鸡汤。

  23. zweite says:

    受教了。需要好好复习一下算法

  24. Yonghang Jiang says:

    最后一句话说得太好了!
    另,修改代码的时候记得先用单元测试保护它们。

  25. enthan 对这篇文章的反应是mark
  26. 重构先生 says:

    重构真谛是小步快速前进,每次改动小部分代码就编译运行检测,快速迭代。任何试图大踏步的重构都是危险的,步子迈的太大,扯着蛋了,才需要还原。不过限于个人水平,重构之后的代码也许只是你自己看着舒服,这倒是真的哦!

  27. 易先锋 对这篇文章的反应是赞一个
  28. 李峰 对这篇文章的反应是赞一个
  29. why 对这篇文章的反应是赞一个mark
  30. 鹿智 对这篇文章的反应是俺的神呀
  31. chenssy says:

    我唯一能鄙视的代码只能是我自己的代码,鄙视的原因就是我不能使它变的更好。这句话太棒了!!

  32. enyes says:

    在我看来,重写别人的代码也很有必要。就算十次中又九次还原,你也很清晰的知道这样写的原因了,下一次重构时,你会做的更好。

  33. vbfool says:

    其实大多数时候,还真的是写的很烂,而且你拿它毫无办法,因为牵一发而动全身,整个推翻是几乎不可能的事。
    现有的项目就是,越改越发现上一个做的人脑子是进了不止二斤水,写成这样,连基本需求都无法完成,以至于改到现在,整个项目和重写一遍都没区别了。

  34. 刘彦斐 对这篇文章的反应是mark
  35. 张奇 对这篇文章的反应是好文
  36. 杨帆 对这篇文章的反应是赞一个
  37. bcc222 对这篇文章的反应是赞一个
  38. 对这篇文章的反应是赞一个
  39. personball says:

    文字观点没错,但补充一点,如果发现面前的代码,是非常明显且大量的违反DRY原则的,则一定是很烂的代码。。。
    然而,教条式遵守DRY原则的代码,看上去也可能会很难看。

  40. personball says:

    文章观点没错,但补充一点,如果发现面前的代码,是非常明显且大量的违反DRY原则的,则一定是很烂的代码。。。
    然而,教条式遵守DRY原则的代码,看上去也可能会很难看。

  41. 韦志远 对这篇文章的反应是敬佩
  42. shuaiagain 对这篇文章的反应是赞一个好文
  43. Yvonne Cheung  这篇文章, 并对这篇文章的反应是赞一个
  44. 黄江昆 对这篇文章的反应是很实用
  45. zhenyu 对这篇文章的反应是赞一个
  46. 陈建华 对这篇文章的反应是赞一个
  47. 张彬 对这篇文章的反应是赞一个
  48. 你的牙丶 对这篇文章的反应是赞一个

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.