橡皮鴨程序調試法

原文:http://coolshell.cn/?p=1719 (酷殼

 

Rubber Duck Debugging下面,讓我來爲你介紹一個程序調試大法——“橡皮鴨程序調試法”,這個方法在調試界是很出衆的,實施起來相當方便和簡易,幾乎可以隨時隨地地實驗,幾乎不需要藉助任何的軟件和硬件的支持,你甚至可以把你的程序打印出來,在紙面上進行調試。

那麼,爲什麼這個方法要叫做橡皮鴨呢?因爲橡皮鴨子是西方人在泡澡時最喜歡玩的一個小玩具,所以,這個東西應該家家戶戶都必備的。因爲,這個方法由西方人發明,所以,就被取名爲“橡皮鴨”了。

好了,話不多說,下面是整個調試方法的流程。

  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中的幾個提示》和《結對編程的利與弊》也談到了一些,供你借鑑。

(全文完)

發佈了120 篇原創文章 · 獲贊 785 · 訪問量 590萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章