程序员最大的烦恼是什么?无非就是因为在编程的过程中一个又一个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”关注我们哟~
网友评论