`
javer
  • 浏览: 67670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

程序员怎么样保证自己的程序没有BUG

阅读更多

  毫无疑问,程序员是善于思考问题的一族。一个程序的编写都是通过:思考、设计、编写、调试、测试以及运行这些基本的阶段。但大部分程序员都有一个问题就是不太愿意测试自己的代码。他们草草的调式完成以后就认为工作结束,测试那是测试人员的工作。

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

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

  2. 影响了产品的质量

  3. 影响了客户的信任度

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

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

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

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

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

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

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

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

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

  如果你通过了以上的步骤都找不出你程序中有任何问题的话,那么我想你的程序应该足够健壮了。其实还有一点必须说明的就是:代码 REVIEW 。

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

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

分享到:
评论

相关推荐

    Buddha Bless Never BUG

    Liunx有趣注释,linux环境下保证可用,./fozu 即可!!!!好玩的注释!!! 佛曰: 写字楼里写字间,写字间里程序员; 程序人员写程序,又拿程序换酒钱。 酒醒只在网上坐,酒醉还来网下眠; 酒醉酒醒日复日,网上...

    Android 如何收集已发布程序的崩溃信息

    没有一个程序员能保证自己写的程序绝对不会出现异常崩溃。特别是针对用户数达到几十万几百万的程序,当你用户数达到一定数量级后,就算你的程序出现个别异常崩溃情况也不用惊讶。既然我们写的程序都有可能发生异常...

    java日期工具类DateUti

    一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮。那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错的...

    各种时间转换类

    好的时间转换工具类 一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮。那如何才能沉淀自己的”代码“呢?从自己编写util开始...

    0424软件测试的定义及分类.xmind

    因为程序员对于自己的作品,思维具有局限性,无法保证测试质量。交给第三方或者专业测试,运用各种测试技术,利用丰富的测试经验和对BUG的敏感,去提高软件的质量; 4)设计测试用例时应考虑到合法的输入和不合法输入...

    TDExplorer8.zip

    程序bug登记工具,保证测试与程序员之间的及时有效交流,

    AndroidCrashHandler:Android崩溃处理流程

    但没有一个程序员能保证自己写的程序绝对不会出现异常崩溃。特别是当你用户数达到一定数量级后,你也更容易发现应用不同情况下的崩溃。  对于还没发布的应用程序,我们可以通过测试、分析Log的方法来收集崩溃信息。...

    链接器和加载器linkers and loaders

    保证在程序主体执行之前使成百个C源文件中的初始化例程可以执行,程序员不得 不做的那堆事情)。有了功能更强大的链接器的支持,未来的语言将更加自动化而 不仅限于程序范畴内的常规任务。由于链接是编译过程中将...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    Linker and loader

    保证在程序主体执行之前使成百个C源文件中的初始化例程可以执行,程序员不得 不做的那堆事情)。有了功能更强大的链接器的支持,未来的语言将更加自动化而 不仅限于程序范畴内的常规任务。由于链接是编译过程中将...

    Java高级程序设计实战教程第一章-Java编码规范.pptx

    一、规范的代码可以促进团队合作 二、规范的代码可以减少bug处理 三、规范的代码可以降低维护成本 四、规范的代码有助于代码审查 五、养成代码规范的习惯,有助于程序员自身的成长 Java高级程序设计实战教程第一章-...

    LumaQQ.NET 2008源码

    另外,在这里还得声明一下,我从来不保证程序中不会出现任何BUG,有BUG的情况,请在小组中反馈和提交。 这个版本的计划,目前这个版本,仍将会实现上个版本已经具有的大部分功能,同时还会增加对登录验证码的支持。...

    用Jester对测试进行测试

    本文内容包括:代码覆盖Jester简介Jester的性能...到目前为止,大多数专业Java程序员都可能捕捉过测试bug。(请参阅参考资料获得有关“被测试传染”的更多信息。)JUnit是Java社区事实上的标准测试框架,没有经过全面的

    OpenGL实用教程

    OpenGL初级教程 非常实用 很详细 作者语录: ...我不宣称我了解OpenGL的每一个方面,也不保证我的代码没有bug,但我会尽一切可能去剔除我的程序中的bugs。 当你在学习上面的课程时,请记住我的话。

    最土团购商业版cv1.6-1552

    投入极低 投入数千元即可拥有最土商业版程序,它仅是您招聘一个程序员1个月的薪资 多重保障 持续开发保障、技术服务保证、问题修正保障,让您的网站发展彻底无后顾之忧2 _! n/ C% ?- r* t. h6 w 程序只是起步,服务...

    翻唱网站源码天空翻唱网

    由于v2.0商业版本是第一个对外出售商业版本,对于程序在出售前已经过长时间的严格测试(已通过国内几个黑客联盟的核心成员及部分程序员朋友多方面测试),目前没发现比较重大的漏洞或BUG,大家可放心使用,当然小的bug还是...

    天涯论坛的EXCEL阅读器(用宏写的,适合上班族用)V1.3C

     4、本人不是专业程序员,水平很低,Bug在所难免,欢迎善意的交流。  5、目前仅在WindowsXP SP3下测试通过,但只在几台机器上使用过,不能保证在所有机器上都能运行,如有问题,请回帖说明,本人将进行改进。  6...

    一个进程池的服务器程序

    一个进程池的服务器程序 下面做了非常简单的http服务器,该服务器只能接收Get请求。 流程大概如下: 1,父进程listen,创建pipe(下面所有父子进程之间的通信都用该pipe) 2,父进程预fork n个子进程 3,各个子...

    Tcl_TK编程权威指南pdf

    你没有必要再去为自己的新应用程序发明一种命令语言,或是费力为自己的工具提供某种用户可编程特性。其实,你可以通过添加一个Tcl解释器,来将自己的应用程序组织成一组操作原语,并使用这些原语来构造最符合用户...

Global site tag (gtag.js) - Google Analytics