论坛首页 海阔天空论坛

你的代码写的很烂

浏览 46699 次
该帖已经被评为良好帖
作者 正文
   发表时间:2010-08-16   最后修改:2010-08-16
wandou 写道
找不着北 写道

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

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

 

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

我就这样被上了一课。

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

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

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

 

翻译来源:外刊IT评论

 

:)

 

是否可以这么理解,此文的主题是:世界上没有烂代码,如果某人认为有,那么是此人不够成熟,too yuang too simple。

也就是说,任何烂代码,都可以用此文的经典辩护了。

本人也要说一句,是不是烂代码,是有标准的。冗余度大,粒度粗的代码都是烂代码。这些都是软件业界的共识,并非世上不存在烂代码。如果真的任何人都可以随便写出好代码,那软件工程就没有意义了。

 

 

这么说吧,你对原文的理解正好错了,而且也正好用自己的回复自证了本文真正观点提出的必要性。

 

本文想说的是当你没有足够理解一个东西的时候,不要盲目的发表见解,总要看到别人的合理之处,而不是自以为是的说一些自以为独到实际人人都知道的论断,来显示出自己的高明。

 

这位兄台的回复正好证明了本文对我们有着相当实际的警示作用。

 

0 请登录后投票
   发表时间:2010-08-16  
xmlspy 写道
下面是javascript代码:
这种代码能不烂吗

for(var i=0;i>array.length;i++){
    var name=obj[i].p1.p2.name;
    var a1=obj[i].p1.p2.name;
    var a2=obj[i].p1.p2.name;
    ....
}


我相信过了多年之后,再看这段代码还是烂;

ps:例如对于一个内聚性的功能清晰的函数,是可以判断的
0 请登录后投票
   发表时间:2010-08-16  
深有体会
特别是在做别人的代码重构的时候。。。

最后发现,还是不要重构的好。

你几乎无法在短时间、局部的环境中体会到10年前编写这段代码的人的思路。。。
0 请登录后投票
   发表时间:2010-08-16  
深有体会,说的很好
0 请登录后投票
   发表时间:2010-08-16  
至少我觉得现在自己写的代码真的好烂!
0 请登录后投票
   发表时间:2010-08-16  
特例吧,
十个烂代码,九个真的烂,
只有一个是例外



0 请登录后投票
   发表时间:2010-08-16  
qx8668 写道
特例吧,
十个烂代码,九个真的烂,
只有一个是例外

烂代码一般都是烂
只是看的人有没有本事
把烂代码改成好的代码.

我见的人中十个有九个没这个能力.
0 请登录后投票
   发表时间:2010-08-16  
有点同感,哈哈
0 请登录后投票
   发表时间:2010-08-16  
说的有道理。过来人都明白代码就这么回事。关键还是寻求一个平衡
0 请登录后投票
   发表时间:2010-08-16  
java的设计模式这本书,序言就说了,一个项目最忌讳的就是“过早优化”,道理一样
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics