小黄鸭调试法,他不是精神分裂!他只是在debug

许多程序员都有过这样的经历:花了一下午或一整天的时间,在试图解决某个Bug,但问题似乎很复杂,总是没有思路。拉个人过来(甚至可能完全不会编程的人),和他blablabla讲了一通,很多时候中途就自己找到了解决办法。其实呢,这种方法,有一个术语:小黄鸭调试法(RubberDuck Debugging)

图0:小黄鸭调试法,他不是精神分裂!他只是在debug

小黄鸭调试法(又称橡皮鸭调试法,黄鸭除虫法)是软件工程中使用的调试代码方法之一。就是在程序的调试、纠错或测试过程中,耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感。

Wiki地址:https://en.wikipedia.org/wiki/Rubber_duck_debugging

此概念是参照于来自《程序员修炼之道》书中的一个故事。故事中的程序大师随身携带一只小黄鸭,在调试代码的时候会把这只小黄鸭放在桌上,然后详细地向小黄鸭解释每行代码。直到突然间,感受到一股神奇的力量从丹田涌起,直冲天灵盖,Bug就在那里!

这样高深的技巧流传开后,也并不一定需要小黄鸭了。于是大家纷纷创新,发明了仙人掌Debug大法,喵喵Debug大法,初音Debug大法……

图1:小黄鸭调试法,他不是精神分裂!他只是在debug

图2:小黄鸭调试法,他不是精神分裂!他只是在debug

所以“小黄鸭”只是一个形式,其主要目的是要你把自己写的代码做“自查”,也就是自己解释给自己听。当然,为了不让你像个“精神分裂”的程序员,引入“小黄鸭”是很有必要的。

一边阐述代码的意图、一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。其真实的本质是Code Review。

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

在你身边找不到小黄鸭的时候,你可以找到你的同事、你的朋友,来做这个小黄鸭。当然,他们并不一定有小黄鸭好使,因为你的那些同事或朋友一定会在你解释的时候,随意地发表意见和看法……

图3:小黄鸭调试法,他不是精神分裂!他只是在debug

[ad w=336]

加载余下内容▼

相关文章:

;