程序员|钢铁般的零Bug代码是怎么炼成的?


程序员|钢铁般的零Bug代码是怎么炼成的?
文章图片
程序员|钢铁般的零Bug代码是怎么炼成的?
文章图片
高级程序员写代码的最高境界就是:一次写成 ,没有Bug 。 正所谓“一步到位” 。

然后我们就认为高级程序员写代码是这样的 , 其实呢?是这样 ,,,,,,
顺便说一下 , 这个境界我是无法到达的 , 但是我能达到这个层次:多次写成 ,没有Bug 。 别人进阶很多次啦 , 而我2000年啦 , 还是化神期 。
或者更准确的说法是:我已经在写代码阶段把Bug都消灭了 , 测试团队运行完测试用例以后 , 发现的Bug数为零 。 其实没有bug也不准确 , 因为测试阶段没有发现Bug 并不代表上线以后也没有Bug ,但至少证明这是一段高质量的代码 。
可能有人要跳出来了:这不可能 , 肯定是你的功能太简单了 。实际上我最近写的这段代码应该是属于中等复杂度的: 
    需要从一个消息队列中获得不同类型的XML消息 , 对消息进行解析 , 更新数据库 , 获取数据库中符合条件的用户 , 发送邮件 。 一个比较好的地方是:没有界面 ! 其实我个人不喜欢写Web界面的 , 觉得很繁杂。
     那零Bug代码是怎么写出来的呢?
【程序员|钢铁般的零Bug代码是怎么炼成的?】我想了想 , 主要有这些关键点:

  • 透彻理解需求很多人看到需求以后 , 想都不想立刻就开始编码 , 这是有问题的 。 作为一个程序员 , 管他高级不高级 , 管他厉害不厉害 , 虽然不是需求分析人员 ,也要考虑下为什么要有这个需求, 这个需求有哪些主干路径 , 有哪些分支路径,在脑子里要形成一个图谱 。 把自己假想成用户 , 换位思考下 , 看看用户会如何使用这个功能 ,通常你都会发现一些意想不到的情况 。
  • 良好的设计把功能划分成接口良好的模块 , 让每个模块各司其职 , 又能依靠良好的接口有效合作 ,能极大的减少Bug的产生 。 这考验就是基本功了,没有速成大法 ,只有自己慢慢苦练 。 所以我们的基础一定要扎实 。
         注意:我这里说的设计不一定是文档, 有可能只是在你的脑子里 。
  • 处理好边界条件据说70%-80%的Bug是在“边界”发生的 , 这些边界条件包括:
  1. 输入数据不合法数组越界
  2. 调用的方法抛出异常
  3. 文件不存在
  4. 文件权限不够
调用其他系统接口时数据未能正常返回打不开数据库连接数据库表在初始情况下没有值运行时间过长导致超时我经常发现:大量的代码被用来处理边界条件 , 有时候甚至比业务代码都要多 。