程序员最大的烦恼是什么? 无非就是因为在编程的过程中一个又一个 bug 的出现.
也许你会为了找代码里的 bug, 困在代码的世界里几个小时甚至几天的时间.
在被 bug 日复一日困住的同时, 程序员为了保住最后的头发, 所以他们找了一种找 bug 的秘密武器 --Rubber Duck Debugging, 橡皮鸭调试法 (又名: 小黄鸭调试法).
"橡皮鸭调试法" 并不是指橡皮鸭成精了, 能自己找 bug 哦! 它要是成精能自己找 bug 了, 那估计这个世界就没我们程序员什么事了!
这个方法是指程序员们向鸭子们解释代码, 在解释代码的过程中可以帮助程序员发现代码中的问题, 更容易找到解决方法.
"橡皮鸭调试法", 这个方法在调试界是很出众的, 实施起来相当方便和简易, 几乎可以随时随地地实验, 几乎不需要借助任何的软件和硬件的支持, 你甚至可以把你的程序打印出来, 在纸面上进行调试.
那么, 具体是怎么操作的呢?
Rubber Duck Debugging 网站很认真的给出了用橡皮鸭找 bug 的详细过程.
首先, 你得有一只鸭子, 而且还是一只橡皮鸭子. 只有有了一只橡皮鸭子, 你才能继续下一步.
当你有了橡皮鸭子之后, 你需要把鸭鸭郑重地放在桌上, 跟人家鸭鸭说清楚, 并且可以的话, 你想用人家检查一下代码.
然后, 你就可以跟鸭鸭解释, 你的代码本来应该是做什么的, 然后深入细节, 逐行解释你的代码.
以上就是整个用鸭鸭找 bug 的流程啦!
其实, 这个原理在于, 你在解释的过程中, 你会告诉鸭鸭你的下一步是做什么, 一条一条的理清自己的思路, 你会意识的你现在做的并不是你实际要做的东西.
这样, 你就能知道你的问题出在哪, bug 就这样被找见啦~
而这个时候的鸭鸭, 依然平静着坐在你的桌前, 静静的与你分享找到 bug 的喜悦, 为保住你仅剩的头发感到欣慰.
注意! 在紧急情况下, 是可以用你的同事代替鸭子的. 当然, 在通常情况下, 大家还是更倾向把错误告诉鸭鸭, 而不是同事.
在网上也有网友现身说法, 告诉我们这件事的可行性.
你们回复可能是觉着程序员对着鸭子说话很好笑, 而我回复是因为想到一个画面很好笑. 想象一下, 一个程序员正解释着自己的代码, 解释到 bug 的时候猛地发现了自己错误的地方, 然后激动地用手勒着鸭鸭的脖子狂喊 "为什么居然犯了这个简单的错?!"" 我是不是瞎了?!"
底下还有程序员回复:
作为程序员, 我可以很负责任地告诉你, 确实是这样没有错了. 因为大家找出 bug 的时候比较激动, 我们班都不让带鸭子了, 大家找到 bug 的时候一激动, 就是把鸭鸭抛起来或者摔墙上.
而且越来越多的人出现在回复里, 来说明用橡皮鸭子来找 bug 是程序员杰一件很普遍的事情.
我在一家创业公司工作, 在你刚入职的时候, 拿到的一系列东西里, 就包括一只橡皮鸭子. 我们公司还有个大一点的鸭子, 专门为了更难的问题准备的. 有时候可能一个鸭子不够, 你还得借你邻桌同事的鸭子来解决问题.
有一次, 有个问题我们一只琢磨不出来, 所以我们就把鸭子都召集起来, 在鸭鸭之神的保佑下, 我们才顺利的相处解决办法来.
这些鸭鸭救了很多人的命, 像它们这样的英雄是应该得到尊敬的.
事实上, 我用橡皮鸭子来写作. 解释我现在正在做的事, 我预期目标, 以及我从 A 点达到 B 点的不同方法. 除了这些, 还有很多不同的问题, 在我跟鸭子解释为什么我能或者不能去做这些事的时候, 我都会顺利地找到解决问题的办法. 我爱橡皮鸭理论.
前程序员, 证明鸭鸭找 bug 确实是真的, 我们办公室没有鸭子, 所以我邻桌的程序员, 就会像用鸭子那样来用我.(只是解释用, 不会扔哦.) 很多次, 我都会听到邻桌幽幽地飘来一句 "你能变一会鸭子吗?"
很多小伙伴可能会疑惑, 为什么跟橡皮鸭解释会这么有用呢?
livejournal 网站上的一位网友给出了自己的答案.
"我觉得, 把你存在的问题变成口头上的询问, 会让你的大脑换个角度去考虑问题. 你把问题转变一下, 从回答问题的人的角度来看问题, 就能让你的大脑设身处地地为回答问题的人着想."
在你盯着一行行代码试图找出 bug 的时候, 你还是创造这些代码的程序员思维.
而你在跟鸭鸭对话, 一问一答之间, 你就会跳出写代码的程序员思维, 从回答问题的角度来考虑, 以旁观者的视角就更容易找出 bug 啦~
最后也别忘了跟帮助你的鸭鸭说一声谢谢哦.
想了解更多 Java, 程序员等相关知识, 可以下方扫描二维码或微信搜索 "速学 Java" 关注我们哟~
来源: http://www.jianshu.com/p/5a1e92669b55