在程序员的职业生涯中,免不了要跟bug一直打交道。Bug也是程序员进阶的磨刀石。如果是处女座的程序员,遇到bug会非常兴奋,乐此不疲去折腾,乃至解决bug;当然,bug还是大部分程序员的噩梦。
在修改bug上经常会存在这么一些问题。
一、面对bug的一些态度
先来说一下软件行业的一些公司,他们经常会让一个人修补另一个人代码里的BUG。在这种情况下,一些程序员完全可以一气呵成书写了一段代码,之后就可以把问题抛给其他工程师。
但是,这样就会出现另一种尴尬的情况。由于每个人的代码技巧和风格不一样,让一个人修复另一个人的BUG工作效率相当低。另一方面,搞得另一位程序员很没面子!何况对于技术高一点的程序员来说,修改越是糟糕的代码,越痛苦!在他们的看来,倒不如重写代码。
其次,一些程序员面对bug也会出现消极的态度:测试人员是不是针对我?我真的适合做程序员吗?这好像不是我的bug!
具备职业修养的程序员,面对bug的正确姿势应该是:调试代码,单元测试,联合调试,集成测试,确认问题所在,进一步找出问题的原因,然后再修改代码,验证修改后的代码。
二、如何解决Bug?
1、二分法定位
这也是比较常规的方法,即把程序逻辑一点点注释掉,看看还会不会出问题,类似二分查找的方法,逐步缩小问题范围。
2、单步调试
由于代码逻辑错误,经常会出现输出结果与预期不符。解决此类问题最好的方法就是利用单步调试,即设定每一步代码的预期结果,然后跟踪判断实际结果是否与预期结果一致,找到不一致的原因!在开发环境无法重现,无法单步调试的,就可以运用添加输出日志的方式判断哪一步的问题。
3、重写一遍
大部分的bug,其实都是 typo。你可以用必杀技,重写一下代码!
而对于兼有管理职责的程序员来说,遇到手下的bug,不用解释,不用推敲,等他们自己把程序改好,或者实在没办法,再来向你解释他们的思想!