你的代码写的很烂

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

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

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

我就这样被上了一课。

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

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

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

[英文原文:LINK ]

53 Responses to 你的代码写的很烂

  1. enthan 对这篇文章的反应是mark
  2. 易先锋 对这篇文章的反应是赞一个
  3. 李峰 对这篇文章的反应是赞一个
  4. why 对这篇文章的反应是赞一个mark
  5. 鹿智 对这篇文章的反应是俺的神呀
  6. 刘彦斐 对这篇文章的反应是mark
  7. 张奇 对这篇文章的反应是好文
  8. 杨帆 对这篇文章的反应是赞一个
  9. bcc222 对这篇文章的反应是赞一个
  10. 对这篇文章的反应是赞一个
  11. 韦志远 对这篇文章的反应是敬佩
  12. shuaiagain 对这篇文章的反应是赞一个好文
  13. Yvonne Cheung  这篇文章, 并对这篇文章的反应是赞一个
  14. 黄江昆 对这篇文章的反应是很实用
  15. zhenyu 对这篇文章的反应是赞一个
  16. 陈建华 对这篇文章的反应是赞一个
  17. 张彬 对这篇文章的反应是赞一个
  18. 你的牙丶 对这篇文章的反应是赞一个
  19. jackie says:

    很有感触啊。。。。

  20. tony says:

    是啊,收益很大

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

  22. 奶茶加盟 says:

    呵呵,收益不错啊

  23. benxiaohaihh says:

    很有感触

  24. 大方 says:

    严以律已,宽以待人!

  25. 老康 says:

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

  26. gcyy0106 says:

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

  27. 大道达人 says:

    严以律已,宽以待人!

  28. Mr_Xu says:

    学习了~!

  29. Fountain says:

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

  30. 泥菩萨 says:

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

  31. Linkjun says:

    不错,值得谨记的文章。

  32. 汤怀 says:

    仿佛就是现在的我。。

  33. chen-xiao says:

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

  34. kapa says:

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

  35. 景笑 says:

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

  36. 吴建军 says:

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

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

  38. 张默 says:

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

  39. fangjian says:

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

  40. hax says:

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

  41. zweite says:

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

  42. Yonghang Jiang says:

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

  43. 重构先生 says:

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

  44. chenssy says:

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

  45. enyes says:

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

  46. vbfool says:

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

  47. personball says:

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

  48. personball says:

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注