程序员|钢铁般的零Bug代码是怎么炼成的?
文章图片
文章图片
高级程序员写代码的最高境界就是:一次写成 ,没有Bug 。 正所谓“一步到位” 。
然后我们就认为高级程序员写代码是这样的 , 其实呢?是这样 ,,,,,,
顺便说一下 , 这个境界我是无法到达的 , 但是我能达到这个层次:多次写成 ,没有Bug 。 别人进阶很多次啦 , 而我2000年啦 , 还是化神期 。
或者更准确的说法是:我已经在写代码阶段把Bug都消灭了 , 测试团队运行完测试用例以后 , 发现的Bug数为零 。 其实没有bug也不准确 , 因为测试阶段没有发现Bug 并不代表上线以后也没有Bug ,但至少证明这是一段高质量的代码 。
可能有人要跳出来了:这不可能 , 肯定是你的功能太简单了 。实际上我最近写的这段代码应该是属于中等复杂度的:
需要从一个消息队列中获得不同类型的XML消息 , 对消息进行解析 , 更新数据库 , 获取数据库中符合条件的用户 , 发送邮件 。 一个比较好的地方是:没有界面 ! 其实我个人不喜欢写Web界面的 , 觉得很繁杂。
那零Bug代码是怎么写出来的呢?
【程序员|钢铁般的零Bug代码是怎么炼成的?】我想了想 , 主要有这些关键点:
- 透彻理解需求很多人看到需求以后 , 想都不想立刻就开始编码 , 这是有问题的 。 作为一个程序员 , 管他高级不高级 , 管他厉害不厉害 , 虽然不是需求分析人员 ,也要考虑下为什么要有这个需求, 这个需求有哪些主干路径 , 有哪些分支路径,在脑子里要形成一个图谱 。 把自己假想成用户 , 换位思考下 , 看看用户会如何使用这个功能 ,通常你都会发现一些意想不到的情况 。
- 良好的设计把功能划分成接口良好的模块 , 让每个模块各司其职 , 又能依靠良好的接口有效合作 ,能极大的减少Bug的产生 。 这考验就是基本功了,没有速成大法 ,只有自己慢慢苦练 。 所以我们的基础一定要扎实 。
注意:我这里说的设计不一定是文档, 有可能只是在你的脑子里 。
- 处理好边界条件据说70%-80%的Bug是在“边界”发生的 , 这些边界条件包括:
- 输入数据不合法数组越界
- 调用的方法抛出异常
- 文件不存在
- 文件权限不够
- 充分的测试:不放过一行代码这是我最想说的 , 测试不仅仅是测试人员的事情, 也是开发人员的事情 。 一定要保证每一行代码都被你执行过 , 不留任何死角 。 这一点非常重要 , 要么你是通过写自动化测试覆盖到的 , 要么是手工执行测试覆盖到的 。 千万不能是你觉得代码简单 , 不会出问题 , 就不管了 。
- 考虑代码修改对别的模块的影响很少代码是完全独立的 , 总是或多或少和别人扯上关系 , 修改这样的代码就要小心了 , 这也是个主要的Bug发生地 。
一定要考虑代码的修改对别人的影响 , 并且做回归测试 。
零Bug代码会带来巨大的好处 , 开发完成 , 进入功能测试或者验收测试阶段以后 , 成本会很低 , 测试会很快 , 因为基本上都是一次通过 , 没有bug 就不需要修改代码 , 返工的成本就不存在 。
推荐阅读
- 程序员|强力支持!国家再出重拳,这是要彻底解决华为芯片危机
- 程序员|37岁程序员裸辞,四个月被497家公司拒绝,问猎头后懵了
- Java|面试三年经验的程序员,感觉简历在造假!连个简单的题目都不会
- 游龙战神|-启动流程,好程序员Java培训分享SpringBoot
- 程序员|漫画:程序员的宿命,真实的反映了我现在的状况。何时是个头?
- 程序员|那些还在外包公司干的程序员们,快醒醒吧
- 程序员|程序员如此坎坷的一生,为何还坚持做程序员?真的是不甘落后吗?
- 程序员|程序员遭辞退后,却被前领导命令回去讲代码,如果是你你会怎么做?
- 程序员|手环耳机二合一 华为B6上手体验
- 程序员|公司新招程序员,入职2天后看了下电脑配置,2天后辞职,领导懵了