首页 > 流程方法 > 橡皮鸭程序调试法

橡皮鸭程序调试法

2009年11月10日 发表评论 阅读评论 4,420 人阅读    

Rubber Duck Debugging下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。

那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。

好了,话不多说,下面是整个调试方法的流程。

  1. 找一个橡皮鸭子。你可以去借,去偷,去抢,去买,自己制作……反正你要搞到一个橡皮鸭子。
  2. 把这个橡皮鸭子放在你跟前。标准做法是放在你的桌子上,电脑显示器边,或是键盘边,反正是你的跟前,面朝你。
  3. 然后,打开你的源代码。不管是电脑里的还是打印出来的。
  4. 对着那只橡皮鸭子,把你写下的所有代码,一行一行地,精心地,向这只橡皮鸭子解释清楚。记住,这是解释,你需要解释出你的想法,思路,观点。不然,那只能算是表述,而不是解释。
  5. 当你在向这只始终保持沉默的橡皮鸭子解释的过程中,你会发现你的想法,观点,或思路和实际的代码相偏离了,于是你也就找到了代码中的bug。
  6. 找到了BUG,一定要记得感谢一下那个橡皮鸭子哦。

什么?你觉得这个方法太“愚蠢”,太“弱智”了?是的,看上去,会这样做的人脑子好像是有点毛病。不过,我要告诉你的是,这个方法的确有效。因为,这就是“Code Review”的雏形!下面让我来给你解释一下。

Once a problem is described in sufficient detail, its solution is obvious.

上面这句话的意思是

一旦一个问题被充分地描述了他的细节,那么解决方法也是显而易见的。

我相信在座的各位都有过这样的经历,当你死活都找不到问题的原因的时候,当你寻求他人的帮助时,对别人解释整个你的想法和意图或是问题背景的时候,你自己都没有解释完,就已经找到问题的原因了。这样的经历,相信大家一定有过。这就是这个方法的意义所在。

所以,“橡皮鸭”只是一个形式,其主要目的是要你把自己写的代码做“自查”,也就是自己解释给自己听。当然,为了不让你像个“精神分裂”的程序员,引入“橡皮鸭”是很有必要的(虽然这样还是有点精神病,但比起精神分裂来说算是好的了,嘻嘻)。所以,真实的本质是Code Review。关于代码评审,大家可以看一下我的这篇文章《Code Review中的几个提示》,你会明白其中更多的东西的。

最后,我想和大家说一下道具“橡皮鸭”。是的,在我们的身边,你不一定能找得“橡皮鸭”,但你可以找到你你的同事,你的朋友,来做这个“橡皮鸭”,当然,他们并不一定有“橡皮鸭”好使,因为你的那些同事或朋友一定会在你解释的时候,随意地发表意见和看法,相当的令人annoying。《Code Review中的几个提示》和《结对编程的利与弊》也谈到了一些,供你借鉴。

(全文完)





好烂啊有点差凑合看看还不错很精彩 (15 人打了分,平均分: 4.87 )
Loading ... Loading ...
  1. yuliang
    2009年11月10日18:30 | #1

    不错,很有趣。要试试看~~^ _ ^

  2. 2009年11月10日22:18 | #2

    好方法,虽然真的有点傻嘿嘿

  3. echotiro
    2009年11月10日22:49 | #3

    不错的方法,值得尝试。

  4. cece84w
    2009年11月11日08:28 | #4

    很不错

  5. 阿拉
    2009年11月11日09:03 | #5

    很有哲学深意~

  6. defmys
    2009年11月11日09:23 | #6

    “自己都没有解释完,就已经找到问题的原因了”,确实经历过几次。
    这方法值得尝试,说的很有道理啊

  7. 2009年11月11日17:48 | #7

    的确是够鱼虫的啊

  8. 风信子杨
    2009年11月12日16:05 | #8

    我觉得这是个不错的方法,今天我遇到一个bug,然后我觉得没什么问题,跟同事解释一番,很快发现错误来了.

  9. 2009年11月16日11:10 | #9

    此方法绝了

  10. ys_sunshine
    2009年11月22日16:34 | #10

    很好很强大啊,记住了~~~~~~~

  11. Debi
    2009年11月23日11:29 | #11

    不错

  12. luobo25
    2009年11月23日22:21 | #12

    很好的博客:)

  13. 2009年12月22日17:00 | #13

    搞点中国特色的,可以摆一枚羊坨

  14. 老大
    2010年2月8日21:29 | #14

    老大,不好意思 之前转过两三篇文章 都注明了来自coolshell 但是忘记了加链接,以后都加上不好意思了

  15. songtianyi
    2011年7月5日14:42 | #15

    当你寻求他人的帮助时,对别人解释整个你的想法和意图或是问题背景的时候,你自己都没有解释完,就已经找到问题的原因了。

    的确是这样

  1. 2009年11月15日10:53 | #1
  2. 2010年7月22日14:11 | #2
  3. 2010年9月9日00:56 | #3

无觅相关文章插件,快速提升流量