Shotgun debugging

Posted on Tue 08 June 2010 in it

今天看新阳共享的一个技术文档《Behind the Scenes at MySpace.com》,里面提到的Shotgun debugging很有意思。

搜了一下儿,和散弹枪扯上关系的一般都挺生猛的:

  • Shotgun marriage: 奉子成婚。这个表达源于二、三百年前的美国。有一女子跟男友意外怀孕,事发后男友却不愿承担责任,于是,女子的父亲便手持猎枪(shotgun)威胁其男友,要他们完婚给自己女儿一个交代。
  • Riding shotgun:坐副驾驶位子。这种说法起源于美国西部历史,那时驾马车的人坐在右边,路上会经常有劫匪,所以,总要有一个人坐在左边副驾驶位置手里拿一杆枪,以防万一。从此以后,坐在车的副驾驶位子是就叫做ride shotgun.
  • Shotgun surgery: 散弹枪手术,在代码的臭味里面用来形容改一个功能需要动n处代码。

Shotgun debugging也是IT术语,是说为了消除软件bug而修改相关但没有直接关系的地方。坏的方面来讲:一般来说这种方法很难有效,除非是特别简单的程序或者是用错了程序语言的功能,而且这样容易引入更多的bug。但从好的方面来看:这种非直接的随机的变动,会引发更多的现象,从而有助于我们定位问题。

在这份文档里面提到,一般引入散弹枪调试的原因有两条:

 

  1. 不知道如何分析和调试问题
  2. 需要立刻解决问题,但收集数据和分析问题需要花太多的时间

 

很庆幸,我们不是第一个原因。