关于程序猿怎样降低程序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行. 超过这个数以后,代码会变得 ...
随机推荐
- iOS文件保存策略
Where You Should Put Your App’s Files To prevent the syncing and backup processes on iOS devices fro ...
- UVA 10828 - Back to Kernighan-Ritchie(概率+高斯消元)
UVA 10828 - Back to Kernighan-Ritchie 题目链接 题意:给图一个流程图,有结点的流程,每次进入下一个流程概率是均等的,有q次询问,求出每次询问结点的运行期望 思路: ...
- HDU 3488Tour(流的最小费用网络流)
职务地址:hdu3488 这题跟上题基本差点儿相同啊... . 详情请戳这里. 另外我认为有要改变下代码风格了..最终知道了为什么大牛们的代码的变量名都命名的那么长..我决定还是把源点与汇点改成sou ...
- bzoj1497(最小割)
传送门:最大获利 题意:建立n个中转站,每个花费P[i],有m个用户,使用Ai和Bi中转站可获利Ci,问最终建立哪几个中转站使获利最大? 分析:根据最大权闭合图建图,用户群和中转站为带权的点集,用户群 ...
- poj3678(two-sat)
传送门:Katu Puzzl 题意:n个点,点的取值可以是0或者1.m条边,有权值,有运算方式(并,或,异或),要求和这条边相连的两个点经过边上的运算后的结果是边的权值.问你有没有可能把每个点赋值满足 ...
- Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用(上)
昨天练车时有一MM与我交替着练,聊了几句话就多了起来,我对她说:"看到前面那俩教练没?老色鬼两枚!整天调戏女学员."她说:"还好啦,这毕竟是他们的乐趣所在,你不认为教练每 ...
- hdu 4747【线段树-成段更新】.cpp
题意: 给出一个有n个数的数列,并定义mex(l, r)表示数列中第l个元素到第r个元素中第一个没有出现的最小非负整数. 求出这个数列中所有mex的值. 思路: 可以看出对于一个数列,mex(r, r ...
- RoboGuice注入框架简单应用
1.设置Activity为RoboActivity; 2.设置界面@ContentView(int resId) 3.使用@InjectView(int resId)反射组件 4.使用@Inject ...
- 备份恢复与CRM集成的sharepoint站点
在部署CRM与Sharepoint2010集成文档管理之后,一直担心如果需要在新服务器上重新部署CRM, 那么之前与CRM集成的Sharepoint2010文档内容,是否可以重新正确映射到相应的文档位 ...
- 使用Ambari快速部署Hadoop大数据环境
使用Ambari快速部署Hadoop大数据环境 发布于2013-5-24 前言 做大数据相关的后端开发工作一年多来,随着Hadoop社区的不断发展,也在不断尝试新的东西,本文着重来讲解下Amb ...