三种调试方法
初级:打log
中级:打断点
高级: 测试驱动开发
初级:打log
使用场景
1.了解这段程序的运行过程,只是对某一个环节的运行情况时,打印log
2.学习新知识时,通过打印的方式,查看他们是什么
缺点
就是不停的打印,查看解锁,比较浪费时间
而且如果你根本不知道程序的运行放式,打log的方式就很低效
中级:打断点
使用场景: 你不清楚程序的运行的过程,适合打几个断点
比如说有一段负复杂的异步操作,循环,递归,你完全不知道它运行到某一个阶段,是什么值,进入到哪里,
他们的先后顺序
清楚的看到程序运行的过程,前进入哪里,进入时的值是多少,都可以方便的看
测试驱动开发
3中排错思路
所谓的“奇葩”问题,有时候真的是自己眼拙,或者自己排查的地方没错,关注点错了,而你盯着那段真的正确的代码,自然怎么检查也查不出问题。
小的方法:
二分法
删除法
对比法
二分法
面对一坨代码,你也不知道bug出在哪里,甚至都没报错,或者你根本不想看这段代码。
你就用二分法,第一行、最后一行、中间一行各自打一个log
因为javascript是自上而下运行的,所以肯定每次都能把错误范围缩小50%
这样应该反复几次就能确定bug在哪里啦。
删除排错法
有时候是不是会出现,我没动呀,怎么刚才还好好的,现在就不能运行了。
这时候你可以选择注释或者删除掉一部分代码,只留下你认知里觉得正确的代码。
不断的删除或者注释,直到不再报错
那么,上一步还报错呢,这一端代码被注释后,错误就消失啦,自然也就定位到bug的位置啦
对比排错法
有时候你也不知道是哪个版本出现的bug,似乎上几次提交就有bug了,而你没注意....
如果删除法和二分法,都无法定位错误,就只能git reset --hard了
回退到绝对没问题的某一次commit
然后利用二分法,找到某一个commit版本没问题,而下一commit版本就出bug了
也就说,定位到问题出现在那一次代码提交
然后通过git diff 对于2次提交,究竟改动了哪些代码。
如何面对没有做过的需求
就是面对一个你从来没有做过的需求,你不知道如何做,你甚至怀疑这个需求能不能做?
这种情况下,我建议只要是听上去比较合理的需求,就不用急着拒绝。
先分析一下这个需求是不是合情合理,真的对用户有帮助。
如果合理,那么再想一想,这种需求是否常见?
毕竟常见的需求肯定有人做过,那么你也就不用担心能不能做?如何做?之类问题啦
所以面对没做过的需求,也不用着急,只要是合理的需求,我们好好思考,总归是有办法解决的。