开发过程中遇到bug属于家常便饭,如何解决是一门艺术
bug
- bug出现的原因是函数的未正常进行,比如溢出函数处理范围,输入的数据问题以及数据的错误表达等等,当然还有硬件和网络链接的各类其他问题,先不做讨论。
定位
- 首先是定位,看报错信息,定位问题的出现点,直接找到出错的地方最好,但一般是方法和层级之间的相互引用,我们需要层层刨析,也就是说报错的点可能不是真正的错点,背后的问题才是问题
- 但依旧存在很多情况导致就是定不到出现问题的第一案发现场,有些系统及其庞大,解决bug的人一般又不是当初开发功能的人,所以有时候找的到问题所在,但找不到触发来源也是常情,或者是引用得第三方插件无法继续深入,或者干脆找不到根源问题所在。
解决
- 但不论哪种情况都不可能不解决,我简单分类了三种方法
1.事前处理
2.事中处理
3.事后处理
事前处理,先处理数据,将数据处理合格后再输入发生bug的函数
事后处理,产生bug的函数输出不合格数据,对不合格数据再处理,做关联填补完善后再输出
简单来讲,事前和事后处理都不需要去管问题的详细出处,只需要把控出事点的入口和出口,适用于难以定位到第一案发位置的情况或者非函数本身硬性错误,还适用于需要快速解决问题没时间细究问题根本。但缺点也明显,就是当函数本身发生错误导致中断的,这还得需要事中处理。
那事中处理就是刨析问题所在,寻根溯源,找到问题源头,根据具体情况具体分析,然后干掉他。
三种思路,一点浅谈,见笑