您的位置: 新闻频道 八卦新闻

原创新闻 编程第一原则:“都是你的错.”

2008-03-24 by 资深记者 robertlyc
评论(6) 有610人浏览 fault

你一定熟悉这样的感觉,因为它经常会发生:当你盯着成堆的代码花上很长时间,仍然不知道问题出在哪里。里面有些你无法摆脱的bug。一定是机器有问题了,要不就是操作系统的问题,或者是工具和类库的问题。一定是这样的!

 

无论你怎么绝望,也别像上面那样。那样做就像巫毒教在祭祀或是靠运气编程。简而言之,那简直是疯了。

 

和那些困难,隐晦的bug斗争会让人产生挫败感。但别让这绝望感占据你。成为一个“质朴”程序员的重要一点就是意志到当代码有问题时候,“都是我的错”。

写道
在许多项目中,你调试的代码都是你和其他项目成员,第三方产品(数据库,连接池,图形库,特殊通信和算法等等)以及平台环境(操作系统,系统类库和编译器)共同混合而成的。
操作系统,编译器或是第三方类库可能会有bug,但这不你首先应该考虑的。首先考虑bug存在于开发的代码中。假定开发产品中的bug要比假定类库中有bug更为合情合理。即使问题真的出现在第三方,你可以在递交bug报告前将你的代码排除出去。
我们有个项目,一个资深程序员认为问题是出现在Solaris系统。没有什么能够改变他的想法(事实上其他的程序工作工作良好)。他花了数周时间来写工作区,然而,显然出于某种原因,并没有解决这个问题。当他不得不坐下来看文档时,他发现了问题并花了几分钟就改正了。现在我们用”错误的选择”来提醒那些准备开始抱怨操作系统的人,其实错误是你自己造成的。

   

    代码的归属权也是一种责任。不管你的软件出现什么样的问题,可能并不是你的代码问题——却总是被看作是你代码的问题。如果你想要推广你的软件,请为它的失败担起责任。然而,从技术上讲,你不必这样做。你可以赢得尊敬和声誉。但你一位把错误和问题推卸给其他人,其他公司和开源组织,是无法赢得这一切的。

 

       从统计学的角度来讲,你程序里的bug不是你写的而是其他原因造成也非常罕见。在代码大全中,Steve McConnell强调了两个研究结果

 

写道
一个组织研究(1973-1984十年间)表明,所有的错误报告中,大约95%的是由程序员失误造成,2%是系统造成(编译器和操作系统),2%是第三方资源,1%是硬件冲突。系统软件和开发工具在今天要比70年代和80年代被更多人使用,因此在当今,程序员失误造成的错误将会占到更高的比例。
 
无论你的软件遇到什么样问题,从代码着手,深入调查直到能确定问题所在。如果问题出现在你不能控制的地方,你不仅需要必要的解决问题办法和诊断技能,你还要追踪问题来证实你的推测。比起推诿给操作系统,工具,和框架来说,这可能会花些功夫。

 

如果你致力于成为一个“质朴”程序员,你应该毫无顾虑的说“嘿 都是我的错——让我来解决它把。”


来自:http://www.codinghorror.com/blog/archives/001079.html

评论 共 6 条 发表评论

teclogid 2008-06-17 17:31
[list]
  • [/lis[list=1]
  • [/lis[list=1]
  • [/lis[list=1]
  • [/lis[list=1]
  • [/lis[/b][b][/b][b][/b][b][/i][i]
    引用
    引用
    [list=1]
    
  • [/lis[list=1]
  • [/lis[url][/url][list=1]
  • [/lis[img][/img]t]t]t]t]t]t]t]t]
    fight_bird 2008-03-26 10:24
    干掉bug的过程有时是令人愉悦的!
    wangxinpier 2008-03-25 16:42
    非常赞同![你应该毫无顾虑的说“嘿 都是我的错——让我来解决它把"]
    Frederick 2008-03-25 10:22
    事实上把错误推卸给开发环境或第三方工具只是一种在无力解决自己的失误的情况下的自我心里安慰。越是菜鸟这种情况越多见。想当年我也是这样过来的。
    有经验的程序员很少抱怨的原因不是没有遇到自己无力解决失误的时候,而是当遇到这种情况的时候,他们知道这很有可能是自己的失误,抱怨于事无补。
    Kevin_zqw 2008-03-25 09:08
    Right
    zhangcheng 2008-03-25 08:18
    说的很对

    发表评论

    您还没有登录,请登录后发表评论