关于程序员如何减少程序Bug的若干建议

毫无疑问,程序员是善于思考问题的一族。一个程序的编写都是通过:思考、设计、编写、调试、测试以及运行这些基本的阶段。

  但大部分程序员都有一个问题就是不太愿意测试自己的代码。他们草草的调式完成以后就认为工作结束,测试那是测试人员的工作。

  按照理论上,如果代码存在问题,那么测试人员和最终的用户肯定可以发现这些 BUG ,而等待哪个时候再返回来查找问题到底错在什么地方确实代价不小,其代价有:

  1. 影响了程序员自己的声誉

  2. 影响了产品的质量

  3. 影响了客户的信任度

  4. 这个时候再 DEBUG 难度增大了许多。

  大的不说,就说多自己声誉的影响吧。如果你的程序总会有这样那样的 BUG ,你得到收益会减少,即使你写了很多代码。

  其实最后一点也很重要;在我们面对一块代码的时候,什么方法都好办,但如果将这块代码防到庞大的系统中之后,简单的问题也难以被立即找出来。为了自己考虑,节省自己 DEBUG 的时候,我们应该让我们的程序尽量没有 BUG 。

  那么怎么样才能保证自己的代码没有 BUG 来?

  程序员必须克服一些自身的致命缺点才能够从根本上解决这个问题。那么这个问题是什么?前面我们已经提到,程序员对自己的代码都非常宽容,认为那是正确的没有问题。实际上这种想法比较正常,程序是通过程序员思考和设计之后才写出来,程序员不会将自己认为不正确的东西写到代码里,而到这个时候都一直假设程序是正确的;但人非圣贤,怎么可能不犯错误来。实际上程序员在对待其他程序员时候的态度就很好,带着一种挑剔和学习的态度;但一旦对待自己的代码就很难这么做;这就是最致命的。程序员也必须对自己的代码带着挑剔和学习的态度;这个基础是假设自己的代码是错误的,然后需要做的是怎么样证明自己的代码是正确的。程序员自身可以在程序生成的每个阶段做这些工作:

仔细的设计、编写代码时、单元测试(重要)、功能测试。

  1.仔细的设计:这个的仔细是说在程序员编写代码之前,其必须对代码的整个结构以及逻辑结构有明确的清晰的了解,只有这个时候才可以去写代码。这里没有谈到文档,但我说到了一定要清晰的思路,但清晰的思路不是每个人都可以在脑袋中直接形成的,很多人都是普通人,没有办法在脑袋瓜中把所有问题都想清楚,那么就记下来,特别对于复杂的逻辑(这个时候画点时间是值得的,必须保证我们对自己的程序有清晰的轮廓后才能开始动手写)。

  2.编写代码:对于没有把握的代码,例如:新设计的算法,最好保证其正确性。可以单独将这部分测试,这可以让代码模块化的同时又保证了代码的正确性。一句话:少量的代码保证质量还是比较简单的。

  3.单元测试:单元测试的重要性不在赘叙了,现在也有许多工具可以帮助程序员并减少工作量。

  4.功能测试:程序员保证自己代码质量的最后一关;为了做这样的工作我们可能必须写一些代码来测试,甚至是测试工作。使用大量的 CASE 来测试,以及错误的 CASE 。这里和测试人员的测试不同之处在于:仍然让程序员的注意力放在其自己的代码范围内,减小了排错的难度。

  *.如果你通过了以上的步骤都找不出你程序中有任何问题的话,那么我想你的程序可能需要的不只是REVIEW了,你可能需要抛弃它,按照之前的思路或者换个思路重新来一遍,这个过程想想或许很麻烦,其实当你真的静下心来去做时,你会发现你得到的不仅是一个没有bug的程序,更多的是你根本意想不到的收获。而且这次的代码写的远比第一遍更顺利,更快,更健壮。it‘s unbelievable.

  前面说道了程序员对待别人代码的态度是挑剔和学习的态度,所以让其他程序员来 REVIEW 你的代码也是检查程序有没有逻辑错误的很好的办法。团队中应该交叉 REVIEW 代码,这是实践的经验。

  作为一个好的程序员必须有以上的习惯,以及对待自己代码象孩子一样,我们要爱惜我们的代码,同时也要让代码走正确的路。

关于程序员如何减少程序Bug的若干建议,布布扣,bubuko.com

时间: 2024-10-19 11:31:31

关于程序员如何减少程序Bug的若干建议的相关文章

漫谈程序员系列:无BUG不生活

我决定谈一谈世界上最著名的虫子:BUG ! BUG 困扰了一代又代的程序员,不论是杰出的计算机科学家,还是像 Linus Torvalds(Linux内核创始人) .Bill Joy(传说三天写出BSD的前身,vi和csh的作者)等神一样的传说,抑或你我芸芸程序猿,都是 BUG 骚扰的对象. BUG 是绝对狂热的好战分子,具有永不停歇的战斗欲望,它潜伏在程序员的周围,一双小眼贼亮贼亮,在你百密一疏时出其不意一击奏效.而无论你是钢筋铁骨,还是羊脂玉体,只要被这只虫子袭击(看过<木乃伊>的话,对圣

程序员如何高效率更改BUG

我们组里有着俩程序猿,老猿和小猿,当然,老猿就是leader.有一天,老猿对小猿说:"你来我们组已经有段时间了,能帮leader做点事吗?"小猿连蹦带跳地说:"怎么不能?我很愿意帮您做事."老猿高兴地说:"那好啊,最近我要出差,你把这个项目跑一下看看吧!回来我瞅瞅." 小猿接过项目,用编译器进行着调试.程序跑着跑着,一条BUG使得程序止步不前,看着时间一分一秒的流逝.小猿为难了,心想:我能不能改掉这个BUG呢?如果leader在身边,问问他该怎么

漫谈程序员系列:程序员该不该考虑初创公司

IT 这个行业,最不缺的就是机会,追逐机会的,有各种各样的小公司,也有各种种样的程序员. 博客之星评选,点击投我一票,谢谢.投过了也可以点哦,每天都可以投投一票. 创业公司 每一个出来创业的人,心中都充满了希望和梦想,而且认为自己眼光独到,手段高超,一定能够逐浪潮头. 可是,创业成功的概率到底有多大?十分之一,还是百分之一? 熙熙攘攘的创业大军,在互联网的江湖里闯荡,有成为传奇的,也有成为炮灰的.传奇者的传奇鼓舞着后来的创业者,创业者已经做好了准备,所谓艰难险阻,不过如此尔: 只要我们找到合适的

漫谈程序员系列:程序员的生活就这样吗

我当了快十年程序员了,终于老得可以来谈谈程序员的生活是什么样子了. 或许陈奕迅的<十年>中的一段歌词,可以表示很多程序员和软件开发之间的感情纠葛: " 十年之前 我不认识你 你不属于我 我们还是一样 陪在一个陌生人左右 走过渐渐熟悉的街头 十年之后 我们是朋友 还可以问候 只是那种温柔 再也找不到拥抱的理由 情人最后难免沦为朋友 怀抱既然不能逗留 何不在离开的时候 一边享受 一边泪流 " 这首歌的词作者是林夕,香港才子.林夕的歌词写得真不错,我还因为这个在 13 年时买了他

卓越程序员和优秀程序员有哪些区别(转)

add by zhj:  有两条非常受用,第一条:能够在完美主义和实用主义之间找到平衡.第二条:他们是否对软件工程的理解超越了代码的级别?他们是否对软件工程的理解达到了架构级别?或者他们是否能够深谋远虑? 对于第一条,非常有感触,因为我之前一直在追求完美,为此做事效率很低,好的程度员一定是能在完美主义和实用主义之间找到平衡的程序员.第二条,非常棒,他告诉我们不想当将军的士兵不是好士兵,如果当一辈子程序员,那一辈子就只能在最底层工作,只有站的高才能看的远,你必须要跳出程序员那一亩三分地,从更高的角

漫谈程序员系列:程序员到底是什么角色

先讲个生活小插曲儿-- 瓦工 房客打电话给我,说卫生间漏水,把楼下的客厅都洇湿了,老先生找上门来了.这还了得,赶紧处理吧.我找了人拆掉了浴缸,砸掉了地板,买了东方雨虹的防水涂料,自己做了防水,闭水试验,剩下就是贴瓷砖了.贴砖是个技术活儿,很专业,我是程序员,虽然可以勉强刷个防水,可贴砖实在干不了.在 58 同城找了一通电话,因为卫生间面积太小,又是改造,有的瓦工不愿意干,有的开的价钱我不能接受,十来个电话过去后才终于找到一个师傅,愿意 400 块把这活儿拾掇了--这还是因为那两天下雨,没别的活儿

优秀程序员——初中高级程序员分类

优秀的程序员 根据这三个维度的水平差异,我们对初级程序员.中级程序员.高级程序员做一个简要的描述. 01 初级程序员 - 知道有事要做 处在初级阶段的时候,我们的精力大多只会专注在专业能力的提升上.这个时候「领导能力」和「连接能力」是很弱的. 所以,这个时候哪怕你有强烈的好奇心也无法很好的表达出来,大多只能被动的接受工作安排. 在这个时期做事情需要依赖一些教程.文档,只能“依样画葫芦”,几乎不能在不借助外部信息的情况下解决之前从未遇到过的新问题,所以百度.Google就成了他们唯一的选择. 你可

程序员生存定律--程序人生的出口

程序员的人生出口 很多人非常想知道自己的未来是什么样子的,迫切到一定程度甚至会找算命先生.如果并不是想得到一个精确结果,这事儿其实并没有想的那么难.程序员的人生看起来五花八门,可以是Windows系,可以是Android系,可以是iPhone系等等,但如果为之做点抽象,那就会发现人生出口的类别其实不多,接下来我们就结合例子来看看程序员的人生中最可能的几个出口.这些出口里有大部分人的未来景象. 1 成就超一流高手 袁峰先生是<Windows图形编程>一书的作者,也是一位纯粹的程序员.从袁峰先生公

【黑马程序员】————初识程序

C程序结构 1) C程序的结构:由函数组成 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”. 所以,可以说C语言程序是由函数构成的. 2)  函数的基本概念 函数名:一个程序中由无数个函数组成,每个函数都有自己的名称 调用(执行)函数:根据函数名就可以调用对应的函数,执行相应的功能 3) C程序的入口 C程序的入口是一个名字叫做main的函数,简称main函数 不管整个程序中有多少个函数,都是先执行main函数 程序开发过程