如何修改bug(二)-bug的修改流程
来源:互联网 发布:无间道 韩琛 知乎 编辑:程序博客网 时间:2024/05/16 08:37
上篇中我对bug做了3大分类:能重现的逻辑错误,不能重现的逻辑错误和潜在的内存错误。
这篇文章是我总结关于逻辑错误的修改流程,也算是后面文章的一个总领。
流程如图:
1 重现
再次强调这个是修改bug的前提。
2 明确事发点
就是明确导致一个bug产生最直接的一个调用或者一个判断。
明确了事发点后有两种情况,就是上图中的分支。
有些bug,在明确了事发点后就立刻知道原因了,这个大家都有体会;有些就不是这么简单了。
定位事发点的方法下篇文章有详细介绍。
3 整理代码
有些事发点逻辑错综复杂,一点注释也没有,也没有文档,或者代码风格很差。整理下代码,能减缩进就减点,太长的函数分割一下。。。就是为了提高阅读性。
因人而异,如果你觉得你的阅读能力超强,不整理也无所谓。
但是千万不要自作聪明的就开始做点“保护”,这个步骤不要让逻辑受一点影响。
4 分析原因
具体情况具体分析。这个步骤有时候是最难的,但是一定要明确原因。不明原因或者误解原因bug的修改后果是有极大风险的。
可参考《如何修改bug(一)-bug的分类和定义》。
5 确定方案
可行性、所做修改对其他模块和逻辑的影响需要周密思考、测试和验证。有些方案看上去很好,正真做进去了才发现时间白花了。在解决一些关于性能方面问题的时候往往会发生拿错方案的惨案。
有时候方案很多,都可行,难以抉择,那就具体情况具体分析了。
6 修改代码
这一步,是所有步骤中最简单的,就是码字。
7 验证
程序员保证自己工作效率和质量的关键步骤。你不想总被别人测出问题吧,或者你也不想问题最多的模块总是你在改的吧。
小结
bug千奇百怪,不是每个bug都需要经历所有流程的。每个步骤都有它的难点。
有些bug难在事发点的定位,比如多线程,异步逻辑中的bug;
有些bug难在原因很难分析,多数是你看不懂代码;
有些bug难在你不敢改,那是你的修改方案没有做好充分的分析。
。。。
其实会者不难,后面我会细细道来,和大家一起分享。
2009-03-18
--------------------------------------------------(未完待续,下篇:明确事发点)----------------------------------------
我的博客
如何修改bug(一)-bug的分类和定义
- 如何修改bug(二)-bug的修改流程
- BUG的修改流程
- 如何修改bug(一)-bug的分类和定义
- 如何修改BUG
- bug 如何修改
- bug的修改过程
- 修改BUG的心得
- 修改的bug记录
- 修改bug
- 如何修改bug(一)——bug的分类和定义
- VC6帮助文件BUG的修改
- 修改BUG的一般步骤
- 关于修改bug的思考
- iOS之修改项目BUG之旅--(二)
- android4.0修改bug系列二
- Adnroid ffmpeg解码(二)bug修改
- 如何使CheckBoxList的Attributes属性生效(修改微软的一个bug)
- 如何使CheckBoxList的Attributes属性生效(修改微软的一个bug)
- flash位图技术研究篇(3):移动缓冲区域
- 终于拿到了Sun J2EE架构师证书了,共享下考试经验和职业规划实践!
- Ajax
- 使用 Eclipse 远程调试 Java 应用程序
- 802.1Q
- 如何修改bug(二)-bug的修改流程
- Sharepoint自定义Feature(5)-----Feature.xml结构
- oracle存储过程基本语法
- vbs脚本操作AD
- C语言:空指针与不指向任何对象的指针的区别
- 水煮TCPMP
- 读书札记
- 阿里软件架构师叶军博士演讲听后感
- 这学期必读的数目(一)