背景
在日常开发中,产生BUG似乎看起来是习以为常的事情,但是如果在生产环境出现BUG,将会是蛮严重的问题,轻则警告处罚,重则扫地出门。虽然不同的公司对待生产BUG的严厉程度,可能不甚相同,但往往越大的公司,在高并发的场景下,小小的BUG也可能产生蝴蝶效应,最终造成大的问题。为了避免BUG可能在生产环境导致事故,还是应该从日常做起,避免在生产环境出现质量事故。
避免措施
作为一名优秀的程序员,应该养成好的编码习惯,避免因代码层面BUG,在生产环境造成的质量问题。下面是日常总结的可采取的一些措施:
- 已经稳定运行的代码,尽量避免大的改动;
- 慎重修改顶层抽象类和接口;
- 注意主次逻辑区分,次要逻辑异常不应影响主流程;
- 尽量使用成熟的工具类,尽量不自行造轮子;
- 注重编码规范,使用分析工具,减少低级错误;
- 代码逻辑尽量小而简单,大而复杂的考虑拆分;
- 重视代码影响范围,如果影响面过大的核心流程,慎之又慎;
- 慎重对待方法调用、返回值,考虑抛异常、空指针的可能;
- 慎重进行无判断的强制类型转换,可能无察觉的爆发;
- 注意方法异常处理,尤其是事务处理和消息队列中消费异常应对;
- 严格的代码品质控制,不要发半吊子的代码上去,指望后面再改进;
- 注意代码逻辑的粒度,保持尽量小的范围;对特定场景控制的,就不要对整个进行控制;
- 严格编写单元测试,保证所写代码被单元测试覆盖;
- 严格保证代码被测试人员测试,未经测试通过的代码不要上生产;
- 防御性编程,考虑外部输入的错误,可能会导致的内部异常;
- 考虑熔断,当数量级不对时,大概率是异常,及时熔断;
- 考虑告警,当出现异常时,及时告知对应人,避免产生蝴蝶效应;
- 考虑分化,当主流程过长时,对各种异常情况,是否影响主流程,分化出不同分支处理;
- 容错性设计 ,考虑在系统设计中引入容错性,使系统在面对异常或错误时能够继续正常运行,而不至于崩溃。