在团队开发过程中,发现bug和处理bug似乎是一件很平常的事情,但是,我们有没有考虑过,造成这些bug的原因,进而会占用我们大量调试时间的根源都有哪些呢?

你可能会对这个问题不屑一顾,既然是bug,无非是因为程序代码运行出错,或者由于相关设定没有正确配置的关系。没错,上面两种情况的确会造成bug,但是相对而言,这两种bug一般耗费的时间也不会太多,因为程序层面的问题或者配置方面的设定,基本都可以在很少量的调试过程中被发现,尤其是函数错误,一般情况是很容易定位的。

我们容易忽略的一个bug来源,它也可能是令我们感到气愤的一个,那是由于并行开发,导致的开发版本不同步造成的bug,这种bug的特点比较鲜明:一般都会让我们再千辛万苦调试到问题的根源后,发现原来是因为没有更新代码,或者因为更新了错误的代码……

这时,你的脸色或许很不好看,因为非但没有半点成感,反之却是一肚子的不高兴。

这个问题在我们集中开发功能的时候和提交版本的前期尤其频繁,因为我们频繁更新代码,而每个人都有很大的可能性修改相同的文件,再加上更新者如果不仔细比较,找出其中的交叉变更,覆盖掉别人修改的内容,那真的是不可饶恕的错误……随之而来的是一个接着一个的领人痛苦的bug,痛苦的大原因即没有任何成感……

这个问题虽然很难避免,但是,只要我们在代码更新上强调规范,同时在开发规范上着重强调对数据库和系统核心模块的变动应该慎之又慎,那么能明显改善这个噩梦。看似简单的事情,做起来一般都不简单。

回想下我们自己更新代码的时候,我们做到了先仔细对比自己和服务器上文件版本的差异,然后逐个更新检查完毕的公文,并在check in过程中填写修改原因了么?还是粗略看了一下,甚至不进行对比,直接问下同事是否有过改动,然后直接check in,而且任何原因都没有……,我想大家都会有自己的一个答案。

而所谓好习惯,虽然起初会感觉有所多余,但是我们一定能够在后面的开发中,逐渐发现它的价值,虽然,它的价值所在是让你很难感觉到它的存在……