Bug

Tip
  • 修复 bug 最好的方式是能够重现 bug,
  • 然后把你的修复替换进去 ——> 重新运行你的程序 ——> 观察 ——> 直到 bug 不再出现。
  • 尽可能早的开始测试,尤其是感觉到到代码复杂的时候
减少 bug 的第一步,是提升自己的程序员素养,努力不给自己和别人找麻烦。
  • 认真分析需求
  • 认真评审技术方案
  • 设计简单的逻辑
  • 风格统一的实现
  • 多自测!及时测试!早发现早处理
  • 不过度设计,支持扩展但不需要提前实现

正确认识Bug

Q: 能不能写出没有bug的代码
A: 很难

Q: 怎样减少代码中的bug
A: 先设计好方案,再开始写代码;及时测试(function维度);及时review(接口维度);提交前再次测试、review

Q: 好的建议
A: 做好封装,不要重复造轮子;
    遵循开闭原则,减少额外的测试任务;
    保持设计刚好满足需求,不过度设计
    提升代码可读性,降低bug排查难度

Q:原则
A:DRY不做重复的事(Don't Repeat Yourself);
    KISS保持简单直接(Keep it Simple Stupid);
    你不需要它(You Ain't Gonna Need It)。

Q: 多分支语句处理、多条件判定的分支语句怎么优化
A: 提前return 较少缩进层级

常见bug

变量:没有考虑到边界值:0,是否有负值,最大值,最小值
函数:入参校验;是否有死循环,递归返回结果是否合理;执行耗时;分值条件是否完整
缓存:缓存一致性(统一修改入口);缓存击穿问题(加分布式锁修改);缓存雪崩(过期时间+随机值)

工具推荐

Travis CI 是一个广泛使用的CI工具,它简直是Github爱好者的福音,而且用户份额很大。

其支持绝大部分主流编程语言,包括但不限于:C、Java、Python、PHP等等。


Jenkins 是一款开源的 CI&CD 工具,工具本身是Java写的,

却支持各种编程语言项目的自动化任务,包括构建、测试、部署等。

调试bug

打日志
二分定位
测试用例