首页 > 其他分享 >[软件工程]代码调试方法 : 小黄鸭调试法 [转载]

[软件工程]代码调试方法 : 小黄鸭调试法 [转载]

时间:2023-03-26 11:57:06浏览次数:52  
标签:黄鸭 代码 小黄 程序员 软件工程 调试

小黄鸭调试法(又称橡皮鸭调试法黄鸭除虫法)是软件工程中使用的调试代码方法之一。

此概念是参照于一个来自《程序员修炼之道》书中的一个故事。

传说中程序编程大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码。

许多程序员都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题,就在解释的过程中击中了问题的解决方案。一边阐述代码的意图一边观察它实际上的意图并做调试,这两者之间的任何不协调会变得很明显,并且更容易发现自己的错误。如果没有玩具小鸭子也可以考虑向其它东西倾诉,比如桌上的花花草草,键盘鼠标。

类似的,有一种现象叫做cone of answers,这是一个常见的现象。
你的朋友跑来问你一个问题,但是当他自己把问题说完,或者说到一半的时候就想出了答案走了,留下一脸茫然的你。是的,这个时候你就起到了那只小黄鸭的作用。

相似的概念还有不少,例如自白调试纸板程序员程序员的假人想出脑外等等。总的来说,在你试图表述自己的想法的过程中,自然地在促使自己去整理思路,重新考虑问题。

X 参考文献

标签:黄鸭,代码,小黄,程序员,软件工程,调试
From: https://www.cnblogs.com/johnnyzen/p/17258237.html

相关文章

  • 2023年3月25日(软件工程日报)
    由于广播没指定唯一的接收者,因此可能存在多个接收器,每个接收器都拥有自己的处理逻辑。这种机制固然灵活,却不够严谨,因为不同接收器之间也许有矛盾。(1)一个广播存在多个接......
  • 从应用层到MCU,看Windows处理键盘输入 [1.在应用层调试Notepad.exe (按键消费者)]
    文本编辑器/文本编辑框是应用层常见的键盘处理程序。微软泄露的WinXP源码下有文本编辑器Notepad的实现:Microsoft_leaked_source_code\nt5src\Source\XPSP1\NT\shell\osshell......
  • 使用 PC 端浏览器开发者工具对移动端真机环境 Web 页面进行远程调试
    Mac/Windows浏览器开发者工具远程调试iPhone/Android页面在移动端Web开发中,有时候只通过模拟器进行调试是不够的,需要在真机环境下进行调试才能发现并解决一些问题。......
  • gdb交叉环境下调试
    一、交叉环境gdb介绍在pc端,用gdb可以很方便的调试程序,如果在板端调试程序该怎么办呢?有两种方法:1、下载gdb源码交叉编译,把编译好的可执行程序gdb复制到板端,这样在板端就可......
  • 软件工程日报——简单实现安卓手机端的地铁系统
    今天,我和我的搭档初步实现了安卓端的地铁系统,完成了线路查询、换乘查询和站点查询三个查询,并且成功显示出正确的数据1.线路查询  2.站点查询 3.换乘查询  ......
  • ArcGIS Runtime for Android 7 编译调试已有项目
    在前面的例子,我们已经了解了如何从头开始实现搭建运行环境,并使用ArcGISRuntimeforAndroid加载地图,今天,我们重点来分享如何打开并编译已有项目。测试环境官方的资料是......
  • JavaScript调试技巧
    阅读目录阐述debuggerconsole.table(animals)用表格显示对象使用console.time()和console.timeEnd()测试循环console.log()和console.dir()的区别阐述我们调试Javas......
  • P06:Chrome插件 Redux-DevTools 用来调试Redux数据
    Redux基础阐述如何配置ReduxDevToolsChrome插件Redux-DevTools–Redux调试工具阐述在前面的文章中已经制作了Redux中state仓库,也可以从仓库中取出数据了。接下来我们需......
  • Python多进程代码调试工具
    https://github.com/Lightning-AI/forked-pdbimportsysimportpdbclassForkedPdb(pdb.Pdb):"""PDBSubclassfordebuggingmulti-processedcodeSug......
  • 2023年3月23日(软件工程日报)
    Fragment的动态创建添加依赖创建一个Fragment布局代码中用一个容器承接,但不直接绑定代码中,使用FragmentManager,FragmentTransaction添加Fragment到容器中 静态创建......