下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。
那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。
好了,话不多说,下面是整个调试方法的流程。
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中的几个提示》和《结对编程的利与弊》也谈到了一些,供你借鉴。
分享到:
相关推荐
小鸭与您的在线数字橡皮鸭见面,以进行陪伴和调试-Ducky! :baby_chick: 镀Chrome扩展,覆盖了一只可爱的小橡皮鸭,作为橡皮鸭调试和一般开发工作中的数字伴侣。 为什么? 因为谁不想在他们的浏览器上放一只可爱的...
#Droidbrute Android PIN破解USB橡皮鸭式有效负载,通过统计生成的单词列表使之高效。 ##它的作用使用不安全的4位PIN设置破解Android设备上的密码。 该脚本是USB橡皮鸭有效载荷,可模拟键盘以输入统计上最常用的4位...
版权所有(C)2014-2019 Rubberduck项目贡献者该程序是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款(许可证的版本3)或(可选)任何更高版本来重新分发和/或修改它。 分发该程序是希望它会...
在IT领域,"橡皮鸭调试法"是一种常见的编程问题解决技巧,通过向橡皮鸭解释代码来帮助程序员发现错误,因此这个标题也可能与编程和调试相关。 【描述】"christiny.github.io 橡皮鸭,你就是那个。" 这个描述非常...
鸭子解码器 介绍 不久前,我去另一个国家接受了一些课程,对我来说很幸运,我已经有了我的鸭子! 在我的旅行中,我经常发现自己靠近未锁定的计算机,我可以根据情况转储 lssas 或后门,为此我开始做一大堆不同的有效...
"橡皮鸭"通常指的是在编程中用来调试的实体,程序员通过向橡皮鸭解释代码问题来帮助自己理解问题所在,而在此情境下,它代表了该工具的辅助和调试性质。"马尔杜伊诺"可能源自意大利语,暗示着该工具具有创造性和艺术...
opengl绘制橡皮条,所见即所得 是对四边形的绘制而非线段
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,为软件设计提供了一种标准的解决方案。在C++编程语言中,理解并应用设计模式至关重要,因为它们可以帮助开发者创建可扩展、可维护且...
在压缩包的子文件“橡皮框的使用与修改”中,可能包含有源代码文件、资源文件、工程设置文件等,这些都对于理解橡皮筋效果的实现至关重要。源代码文件可能是cpp和h格式,cpp文件用于实现函数逻辑,h文件则包含了类和...
此扩展程序只是一件有趣的小事,可以提醒您橡皮鸭,您可以和它聊天,看到Chrome中的小图标会使您很可能退后一步,而橡皮鸭又可以拯救您花费大量时间并提高您的生产率。 橡皮鸭增加了代理权,我们在AE Studio喜欢的...
安德鲁·达基(AndroDucky) HID有效载荷创建工具,适用于android,无需nethunter,无需使用橡皮鸭先决条件安卓PHP服务器Android的Stellar内核(注意因设备型号而异) HID键盘()如何使用非常简单,首先使用...
一个非常快速的橡皮鸭脚本,它利用了C:\Windows\System32 文件夹从受害者机器窃取不同的信息。 Gather_Network_Info_Script REM gathernetworkInfo JonnyBanana 的信息窃取脚本REM REM 延迟大,因为Windows 需要很...
绕过UAC Hak5 USB 橡皮鸭的全功能 UAC 旁路,修复了当 UAC 窗口不显示时在有效负载开始时不需要的“y”。 根据您的需要自定义延迟。 降低的延迟值将加快有效负载的执行速度,执行不正确的风险很小。 增加延迟值将...
"橡皮鸭式有效载荷"这一概念源于黑客和安全领域,它通常指的是一个能够执行特定功能或操作的代码片段,这些操作可能包括系统探测、数据收集或恶意活动。在IT安全中,有效载荷往往是攻击者利用漏洞入侵系统后部署的一...
在计算机图形学中,"画橡皮线"通常是指一种模拟橡皮擦功能的技术,它允许用户在屏幕上连续地绘制线条,擦除已有的图像或覆盖原有颜色。这个功能广泛应用于绘图软件、图像编辑器以及游戏开发等领域,提供给用户更加...
橡皮筋画线程序,要求: 利用鼠标在视图上绘制线,能够设置线的颜色和宽度; 能够用鼠标拾取绘制的某条线,被选中的线能够高亮显示,并且弹出对话框,输入线的属性保存起来; 能够将绘制的线数据保存在Line....
GitHub的代码审查助手 Rubberduck是GitHub和Bitbucket的侧边栏,可为您的代码审查带来更好的代码导航。 浏览代码页和拉取请求时,您可以*悬停以获取符号信息*查找符号的用法*打开符号的定义*使用文件树进行导航 ...
1、橡皮筋画线程序,要求: 利用鼠标在视图上绘制线,能够设置线的颜色和宽度; 能够用鼠标拾取绘制的某条线,被选中的线能够高亮显示,并且弹出对话框,输入线的属性保存起来; 能够将绘制的线数据保存在...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC)库来创建一个橡皮条绘图的单文档应用程序。MFC是微软提供的一套C++类库,它简化了Windows应用程序的开发,特别是那些基于用户界面的应用。在这个...
在VC++编程环境中,"vc画橡皮线的源代码"是一个典型的图形用户界面(GUI)应用开发示例,主要用于教初学者如何在Windows程序中绘制动态的、可擦除的线条,即“橡皮线”。这个例子的核心在于利用MFC(Microsoft ...