我写的程序功能出现了一个Bug,Bug刚开始非常“诡异”,那就是几乎所有同事使用我写的这个程序功能的时候都没问题,但是偏偏就我们公司一个同事使用起来有问题。即使她当面给我复现了,我开始也没察觉到问题所在,直到Bug被解决,我都快要笑死了,因为,这个事情实在是有点好玩。

打开网易新闻 查看更多图片

先简单描述下这个程序功能吧,大概就是有个界面通过点击按钮,然后弹出一个页面,选择页面的一些数据,最后把选择的数据显示在界面上。

我的同事是个女孩子,她不管怎么操作,在弹出的界面上选择好数据,但是数据就是显示不出来。刚开始得知这个Bug的时候我立马在我电脑上操作,发现我电脑上没问题,选择的数据都能显示出来。

为了搞清楚这个问题,我还在其他同事的电脑上尝试复现这个问题,但是发现都没有问题。于是,最开始我认为我的这个女同事的电脑环境有问题。

但是,“诡异”的是,当这个女同事亲自在其他同事电脑上操作,问题就又出现了!

最后,我就把问题定位在了人身上!而开始我以为是电脑环境的一些不可知问题导致了这个Bug的出现,但看这个女同事只要亲自操作就会出现问题,我感觉这个Bug很蹊跷。

虽然我知道了这个Bug的存在,但反复操作了几次,依然没有复现问题,这就让我很头疼了。最后,我只能选择一行一行看代码!但仅限于碰运气的心理!

我正漫无目的地翻着代码,翻着翻着突然看觉眼前的代码有些眼熟,好像上面出现过这段代码,一看之下,还真就是跟那个按钮有关。

于是,我仔细研究了下这段代码,果然就发现了问题!

这段代码其实是按钮的点击事件,开始弹窗然后选择数据,当窗体关闭时,就会去取选择的数据,然后显示在界面上,而问题就出在这!因为,这个按钮的点击事件只做了取数据的操作,并没有显示数据的操作。

我开始还纳闷,按照代码显示,这个按钮事件是百分百无法显示取到的数据的,但是,为什么偏偏我的那个女同事取不到,我则可以取到呢?

然后,我就恍然大悟了!然后就觉得自己很傻!

为什么我总是复现不了问题,甚至于我其他同事都复现不了问题呢?原因就在于,弹窗选择数据的这个操作不光有按钮可以弹窗,右键菜单也有!

我跟其他同事的使用软件的习惯都是使用右键菜单,而那个女同事使用软件的习惯则是使用界面上的按钮,而右键菜单的功能是正常的,可界面上的按钮却是不正常的!

最后,我直接将右键菜单的代码复制到按钮事件代码里面,然后功能就正常了!

看到这里,您是不是也觉得这个问题出现得很傻呢?是不是很想笑呢?

有人会问:“右键菜单和界面按钮的逻辑是一样的,为什么不对逻辑进行封装,而是两个地方都单独写代码呢?”

其实,这个问题我开始也很纳闷,但是,因为时间比较久了,我也想不起来我当时为什么要这么干!但是,通过代码,我大致猜出了我这么做的目的。

其实,界面上有很多按钮的功能都可以在右键菜单里面找到,但是,按钮和右键菜单的业务逻辑虽然一样,但是对于逻辑的处理方式却不太一样。因此,才会出现右键菜单和按钮逻辑虽然一样,但是执行效果不一样的问题,可能当初为了省事,因为反正大部分按钮和右键菜单的处理逻辑都不一样,因此我干脆对相同处理逻辑的右键菜单和按钮的做了复制粘贴的处理。

但是,可能粘贴不完全,测试的时候也只测了右键菜单,因此才一直没发现问题。

结语

值得说的是,这个我写的这个功能已经上线很久了,使用频率还挺高,整个公司硬是一直没人发现问题,所以,这个事情可能很多人看似很平淡,但是作为程序员,是值得深思的!