什么是小黄鸭调试法
小黄鸭调试法(又称橡皮鸭调试法,黄鸭除虫法)是软件工程中使用的调试代码方法之一。此概念是参照于一个来自《程序员修炼之道》书中的一个故事。传说中程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码。
小黄鸭调试法适用场景
example A
程序猿A:又报错了,明明代码看起来没问题啊。。。
程序猿B:敲键盘。
程序猿A:明明什么都没做,怎么就报错了呢?
程序猿B:你在讲鬼故事吗?
程序猿A:帮我看一下,这里哪出现了问题?
程序猿B:这写的啥啊?
程序猿A:balabala,哦!我知道了。。。
example B
程序猿A:这又是个什么报错,这一串英文是什么鬼。
程序猿B:(我是一只小黄鸭,我不会说话)
程序猿A:(抠头皮)
程序猿B:(我是一只小黄鸭,我不会说话)
程序猿A:(吃手指)
程序猿B:(我是一只小黄鸭,我不会说话)
程序猿A:百度……半小时后
程序猿B:找到错误了吗?
程序猿A:你来帮我看一下,我先这样,再这样,然后这样,没问题啊,怎么就报错了。
程序猿B:你在说啥?
程序猿A:就是balabala,bilibili,我知道了!!!
小黄鸭调试法先决条件
由以上例子可以得知程序猿B从头到尾只是一个工具人,并没有什么作用。
这只是个名字,一个代号。你可以叫程序猿B,我也可以叫程序猿B,他们都可以。
因此万物皆可为程序猿B,那么小黄鸭也可以。
所以只需要有一只小黄鸭即可触发
小黄鸭调试法的充分不必要条件
。
所以只需要有一只小黄鸭即可触发
解决问题的必要不充分条件
。
得出公式:
codeMonkeyA me = new codeMonkeyA();
codeMonkeyB yellowDuck = new codeMonkeyB();
while(!problem.isSolve){
me.say();
yellowDuck.silent();
}
return problem.isSolve;
小黄鸭调试法最佳实践
-
获取一只小黄鸭
– channelA:点外卖送一只
– channelB:淘宝买一只
– channelC:生日礼物收到一只
– channelD:new一只小黄鸭
-
遇到问题,对着小黄鸭(工具鸭)balabala
– methodA:肉眼看代码balabala
– methodB:一边debug,一边balabala
– methodC:一边抠头,一边balabala -
灵光一闪,问题解决
– situationA:我知道了,原来是这样。
– situationB:卧槽,这真是一个大坑。
– situationC:这个锅我不接,有人改了代码。
总结
小黄鸭调试法
实则是通过对着小黄鸭自言自语来整理程序猿思路,从而达到山穷水尽疑无路,柳暗花明又一村的豁然开朗之境。相较于
抠头调试法
和
啃手指调试法
可以更高效、更健康的发现和解决问题,建议程序猿们多加练习和实践,早日成为程序大师。