刚进公司,接手一个项目在新建页面添加一个编辑状态,很常见的需求,但是接手别人的代码来写,就很不一样了...
不敢动之前的代码,于是在代码的最后面加上一个 flag ,如果是编辑状态就进入这里的逻辑,最后流程都跑通了,但是出了一个 bug :如果之前进入过编辑页面并且提交了,后面再进入编辑页面渲染的数据都是第一次进入编辑时的数据。
当然一看就知道,是在哪里把这些数据存下来了,我没写相关的操作,那就是在之前的代码里面,于是先 ctrl + f ,找了一遍赋值表单的操作,没找到,接着又在进入我这个 flag 的逻辑的最前面对表单某个属性进行了赋值,这个赋值操作是成功的,在页面上能渲染出,这么一判断还是在这个 flag 前面的代码被赋值了,于是又 ctrl + f 找了一遍,但还是没找到,于是我就非常肯定赋值是在后面的操作了,于是在后面的代码里吭哧吭哧扒啦扒啦...
半天时间过去,除了一大堆 console.log 什么也没扒拉出。
时间要紧,遂交给公司老人,人没多久就找到了,就在我加的 flag 前面不远,有一个赋值操作,在那个赋值前面把我的 flag 判断加上,一切运行良好/捂脸
这样的事情发生不是一两次了,总是找不到出问题的点,不能根据逻辑进行反推,没有思考清楚整个流程,打了很多 log ,但其实大部分都是没用的。
下次再出现 bug ,首先从少打 log 做起,要么不打,要打就要逼自己找到正确的位置再打。
怎么找到正确的位置,首先根据业务逻辑判断几个可能是问题所在的点,再根据这几个点慢慢缩小范围。
还有一点是 angularJS ,进入编辑页面表单对象有些属性渲染不上去,加了一个setTimeout 才可以,不是很能理解为什么延迟赋值就可以渲染成功,搜了一下也没有相关资料。
网友评论