关于程序猿怎样降低程序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的若干建议的更多相关文章
- 漫谈程序猿系列:无BUG不生活
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- 辛星跟您玩转vim第三节之程序猿特须要的移动方式
前面第二节我首先值得一提的是,我的vim教程pdf版本号已经写完了.大家能够去下载,这里是csdn的下载地址:csdn下载.假设左边的下载地址挂掉了.也能够自行在浏览器以下输入例如以下地址进行下载:h ...
- 程序猿制造Bug的根本原因竟然是....
传说中: 「杀一个程序猿不需要用枪,改三次需求就可以了.」 而且, 「这竟然也是程序猿制造Bug的根本原因....」 ↓↓↓↓↓↓↓ #/原始需求/# 你去饭店,坐下来. “服务员,给我来份宫保鸡 ...
- 程序bug导致了天大的损失,要枪毙程序猿吗?[ZZ]
来自猫扑:程序bug导致了天大的损失,要枪毙程序猿吗? 0 引言 年会上Review 源代码算什么? 法庭上 Review code 才带劲..... 2015年9月3日,随着东京最高法院驳回瑞穗证券 ...
- 论 BUG调试与(程序猿)初学者
作为一枚程序猿,BUG调试是最基本的技能,对于初学者更是重中之重.个人而言,要想为自己的程序猿生涯更上一层楼,就得知道什么是BUG调试,而且还必须知道怎么调好BUG.那么BUG究竟是什么呢?在我之前的 ...
- 怎样跟程序猿谈一场没有Bug的恋爱
<iframe width="580" height="90" align="center,center" id="cpro ...
- 漫谈程序猿系列:她发现了一个Bug……
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- 从此走上一条iOS程序猿不归路。。。
新的城市,新的生活!前不久刚刚结束了苦逼的面试找工作之旅,期间也小有收货,如今正处年底工作闲暇之余,将前一阵子陆陆续续的总结整理了一下,本人菜鸟程序猿一只,水平有限,本文总结的知识不算深入,比较浅显, ...
- 程序猿职业生涯中的 Norris 常数
我的朋友Clift Norris发现了一个基本常数.我称之为Norris常数,一个未经培训的程序猿在他或她遇到瓶颈之前能写出的平均代码量.Clift预计这个值是1500行. 超过这个数以后,代码会变得 ...
随机推荐
- Hbase0.96源码之HMaster(一)
从main()函数開始 public static void main(String [] args) { VersionInfo.logVersion(); new HMasterCommandLi ...
- Android照片墙完整版,的完美结合LruCache和DiskLruCache
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/34093441 在上一篇文章其中,我们学习了DiskLruCache的概念和基本使用 ...
- Linux Shell 之 我的第一个Shell程序
这里我首先会介绍一个Shell是什么,再介绍我的第一个Shell程序和从中总结的经验. 一.Shell是什么 在说我的这个Shell程序之前,还是先跟大家说说什么是Shell吧,相信Shell这个 ...
- PreparedStatement与Statement
转载自:http://www.importnew.com/5006.html PreparedStatement是用来运行SQL查询语句的API之中的一个,Java提供了 Statement.Prep ...
- MVC数组模型绑定
ASP.NET MVC数组模型绑定 在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type=& ...
- ConditonHelper
在网上其实已经有很多类似这种拼接sql条件的类,但是没有看到一个让我感觉完全满意的这样的类.最近看到 http://www.cnblogs.com/xtdhb/p/3811956.html 这博客,觉 ...
- Problem and Solution Code Snippets
(积累知识,遇到发展,本文仅用于备忘录,不时它需要召回准备) Problem: 依据String的大小来调整Label的frame.在view中又一次更新views的layout并显示. Soluti ...
- Cocos2d-x3.0下一个 Lua与C++打电话给对方
这里谈下Lua与C++如何实现相互通话 原来的连接:http://blog.csdn.net/qqmcy/article/details/26052771 DJLCData.h 实现类 // // D ...
- pygame系列_小球完全弹性碰撞游戏
之前做了一个基于python的tkinter的小球完全碰撞游戏: 今天利用业余时间,写了一个功能要强大一些的小球完全碰撞游戏: 游戏名称: 小球完全弹性碰撞游戏规则: 1.游戏初始化的时候,有5个不同 ...
- http协议知识整理(转)
HTTP 协议 作为web开发人员,了解一些http协议的知识很有必要.本文简单介绍了HTTP协议的知识,若有错误的地方,望大家指正. 1.HTTP协议是什么? http协议是一个应用层的协议.规定了 ...