橡皮鴨程式除錯法

2021-05-11 14:28:10 字數 1594 閱讀 4129

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

酷殼

下面,讓我來為你介紹乙個程式除錯**——「橡皮鴨程式除錯法」,這個方法在除錯界是很出眾的,實施起來相當方便和簡易,幾乎可以隨時隨地地實驗,幾乎不需要借助任何的軟體和硬體的支援,你甚至可以把你的程式列印出來,在紙面上進行除錯。

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

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

找乙個橡皮鴨子。你可以去借,去偷,去搶,去買,自己製作……反正你要搞到乙個橡皮鴨子。

把這個橡皮鴨子放在你跟前。標準做法是放在你的桌子上,電腦顯示器邊,或是鍵盤邊,反正是你的跟前,面朝你。

然後,開啟你的源**。不管是電腦裡的還是列印出來的。

對著那只橡皮鴨子,把你寫下的所有**,一行一行地,精心地,向這只橡皮鴨子解釋清楚。記住,這是解釋,你需要解發布你的想法,思路,觀點。不然,那只能算是表述,而不是解釋。

當你在向這只始終保持沉默的橡皮鴨子解釋的過程中,你會發現你的想法,觀點,或思路和實際的**相偏離了,於是你也就找到了**中的bug。

找到了bug,一定要記得感謝一下那個橡皮鴨子哦。

什麼?你覺得這個方法太「愚蠢」,太「弱智」了?是的,看上去,會這樣做的人腦子好像是有點毛病。不過,我要告訴你的是,這個方法的確有效。因為,這就是「code review」的雛形!下面讓我來給你解釋一下。

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

上面這句話的意思是

一旦乙個問題被充分地描述了他的細節,那麼解決方法也是顯而易見的。

我相信在座的各位都有過這樣的經歷,當你死活都找不到問題的原因的時候,當你尋求他人的幫助時,對別人解釋整個你的想法和意圖或是問題背景的時候,你自己都沒有解釋完,就已經找到問題的原因了。這樣的經歷,相信大家一定有過。這就是這個方法的意義所在。

所以,「橡皮鴨」只是乙個形式,其主要目的是要你把自己寫的**做「自查」,也就是自己解釋給自己聽。當然,為了不讓你像個「精神**」的程式設計師,引入「橡皮鴨」是很有必要的(雖然這樣還是有點精神病,但比起精神**來說算是好的了,嘻嘻)。所以,真實的本質是code review。關於**評審,大家可以看一下我的這篇文章《code review中的幾個提示

》,你會明白其中更多的東西的。

最後,我想和大家說一下道具「橡皮鴨」。是的,在我們的身邊,你不一定能找得「橡皮鴨」,但你可以找到你你的同事,你的朋友,來做這個「橡皮鴨」,當然,他們並不一定有「橡皮鴨」好使,因為你的那些同事或朋友一定會在你解釋的時候,隨意地發表意見和看法,相當的令人annoying。《code review中的幾個提示

》和《結對程式設計的利與弊

》也談到了一些,供你借鑑。

(全文完)

橡皮鴨程式除錯法

面,讓我來為你介紹乙個程式除錯 橡皮鴨程式除錯法 這個方法在除錯界是很出眾的,實施起來相當方便和簡易,幾乎可以隨時隨地地實驗,幾乎不需要借助任何的軟體和硬體的支援,你甚至可以把你的程式列印出來,在紙面上進行除錯。那麼,為什麼這個方法要叫做橡皮鴨呢?因為橡皮鴨子是西方人在泡澡時最喜歡玩的乙個小玩具,所...

小黃鴨除錯法

編輯本詞條缺少 編輯吧!小黃鴨除錯法 又稱橡皮鴨除錯法,黃鴨除蟲法 是 軟體工程中使用的除錯 方法之一。此概念是參照於乙個來自 程式設計師修煉之道 書中的乙個故事。傳說中程式大師隨身攜帶乙隻小黃鴨,在除錯 的時候會在桌上放上這只小黃鴨,然後詳細地向鴨子解釋每行 許多程式設計師都有過向別人 甚至可能向...

擴充套件 小黃鴨除錯法

場景一 我們都有過向別人 甚至可能向完全不會程式設計的人 提問及解釋程式設計問題的經歷,但是很多時候就在我們解釋的過程中自己卻想到了問題的解決方案,然後對方卻一臉茫然。其實上面兩種場景現象就是所謂的小黃鴨除錯法 rubber duck debuging 又稱橡皮鴨除錯法,它是我們軟體工程中最常使用除...