小黃鴨除錯法

2021-07-23 08:51:15 字數 1902 閱讀 7463

編輯本詞條缺少

編輯吧!

小黃鴨除錯法(又稱橡皮鴨除錯法,黃鴨除蟲法)是

軟體工程中使用的除錯**方法之一。

此概念是參照於乙個來自《程式設計師修煉之道》書中的乙個故事。傳說中程式大師隨身攜帶乙隻小黃鴨,在除錯**的時候會在桌上放上這只小黃鴨,然後詳細地向鴨子解釋每行**。

許多程式設計師都有過向別人(甚至可能向完全不會程式設計的人)提問及解釋程式設計問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述**的意圖一邊觀察它實際上的意圖並做除錯,這兩者之間的任何不協調會變得很明顯,並且更容易發現自己的錯誤。如果沒有玩具小鴨子也可以考慮向其它東西傾訴,比如桌上的花花草草,鍵盤滑鼠。

類似的,有一種現象叫做coneofanswers,這是乙個常見的現象。你的朋友跑來問你乙個問題,但是當他自己把問題說完,或者說到一半的時候就想出了答案走了,留下一臉茫然的你。是的,這個時候你就起到了那只小黃鴨的作用。

相似的概念還有不少,列如自白除錯、紙板程式設計師或程式設計師的假人、想出腦外等等。總的來說,在你試圖表述自己的想法的過程中,自然地在促使自己去整理思路,重新考慮問題。

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

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

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

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

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

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

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

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

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

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

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

上面這句話的意思是

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

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

所以,「橡皮鴨」只是乙個形式,其主要目的是要你把自己寫的**做「自查」,也就是自己解釋給自己聽。當然,為了不讓你像個「精神**」的程式設計師,引入「橡皮鴨」是很有必要的(雖然這樣還是有點精神病,但比起精神**來說算是好的了,嘻嘻)。所以,真實的本質是code review。

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

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

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

擴充套件 小黃鴨除錯法

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

橡皮鴨程式除錯法

原文 http coolshell.cn p 1719 酷殼 下面,讓我來為你介紹乙個程式除錯 橡皮鴨程式除錯法 這個方法在除錯界是很出眾的,實施起來相當方便和簡易,幾乎可以隨時隨地地實驗,幾乎不需要借助任何的軟體和硬體的支援,你甚至可以把你的程式列印出來,在紙面上進行除錯。那麼,為什麼這個方法要叫...

橡皮鴨程式除錯法

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