php专区

 首页 > php专区 > PHP进阶 > 设计模式 > 有趣的橡皮鸭程序调试法

有趣的橡皮鸭程序调试法

分享到:
【字体:
导读:
         摘要:下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。 ...

有趣的橡皮鸭程序调试法

下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。

那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。

好了,话不多说,下面是整个调试方法的流程。

  1. 找一个橡皮鸭子。你可以去借,去偷,去抢,去买,自己制作……反正你要搞到一个橡皮鸭子。
  2. 把这个橡皮鸭子放在你跟前。标准做法是放在你的桌子上,电脑显示器边,或是键盘边,反正是你的跟前,面朝你。
  3. 然后,打开你的源代码。不管是电脑里的还是打印出来的。
  4. 对着那只橡皮鸭子,把你写下的所有代码,一行一行地,精心地,向这只橡皮鸭子解释清楚。记住,这是解释,你需要解释出你的想法,思路,观点。不然,那只能算是表述,而不是解释。
  5. 当你在向这只始终保持沉默的橡皮鸭子解释的过程中,你会发现你的想法,观点,或思路和实际的代码相偏离了,于是你也就找到了代码中的bug。
  6. 找到了BUG,一定要记得感谢一下那个橡皮鸭子哦。

什么?你觉得这个方法太“愚蠢”,太“弱智”了?是的,看上去,会这样做的人脑子好像是有点毛病。不过,我要告诉你的是,这个方法的确有效。因为,这就是“Code Review”的雏形!下面让我来给你解释一下。

Once a problem is described in sufficient detail, its solution is obvious.

上面这句话的意思是

一旦一个问题被充分地描述了他的细节,那么解决方法也是显而易见的。

我相信在座的各位都有过这样的经历,当你死活都找不到问题的原因的时候,当你寻求他人的帮助时,对别人解释整个你的想法和意图或是问题背景的时候,你自己都没有解释完,就已经找到问题的原因了。这样的经历,相信大家一定有过。这就是这个方法的意义所在。

所以,“橡皮鸭”只是一个形式,其主要目的是要你把自己写的代码做“自查”,也就是自己解释给自己听。当然,为了不让你像个“精神分裂”的程序员,引入“橡皮鸭”是很有必要的(虽然这样还是有点精神病,但比起精神分裂来说算是好的了,嘻嘻)。所以,真实的本质是Code Review。

最后,我想和大家说一下道具“橡皮鸭”。是的,在我们的身边,你不一定能找得“橡皮鸭”,但你可以找到你你的同事,你的朋友,来做这个“橡皮鸭”,当然,他们并不一定有“橡皮鸭”好使,因为你的那些同事或朋友一定会在你解释的时候,随意地发表意见和看法,相当的令人annoying。

本文地址:http://www.nowamagic.net/librarys/veda/detail/968,欢迎访问原出处。

有趣的橡皮鸭程序调试法
分享到:
单例模式虽好但请不要滥用
单例模式虽好但请不要滥用 说到面向对象的设计模式,现在很多人都可以随便说出好几种常用的,但是有没有想过设计模式,即使是初学者也至少能说一下SingleTon和Factory Method这两个。那么,设计模式是不是随便怎么用都没问题哪? 这个问题从提问的方式上就可以看出,答案一定是否定的(大家也不是白白接受...
软件开发还算不上是一门科学
软件开发还算不上是一门科学 很多大学里是把软件开发相关的专业划入工科的,这给人一种错觉,让人认为软件开发也是一个工程学科,就像土木建筑,动力机械那样。但这从根本上错了,土木建筑,动力机械的背后有确实的科学定律作为支撑,而软件开发的背后基本上什么都没有,远不是一种“科学”。 也正因此,“软件工程...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……