程序員最大的煩惱是什麼?無非就是因爲在編程的過程中一個又一個bug的出現。

也許你會爲了找代碼裏的bug,困在代碼的世界裏幾個小時甚至幾天的時間。

在被bug日復一日困住的同時,程序員爲了保住最後的頭髮,所以他們找了一種找bug的祕密武器——Rubber Duck Debugging,橡皮鴨調試法(又名:小黃鴨調試法)。

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

“橡皮鴨調試法”並不是指橡皮鴨成精了,能自己找bug哦!它要是成精能自己找bug了,那估計這個世界就沒我們程序員什麼事了!

這個方法是指程序員們向鴨子們解釋代碼,在解釋代碼的過程中可以幫助程序員發現代碼中的問題,更容易找到解決方法。

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

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

那麼,具體是怎麼操作的呢?

Rubber Duck Debugging網站很認真的給出了用橡皮鴨找bug的詳細過程。

首先,你得有一隻鴨子,而且還是一隻橡皮鴨子。只有有了一隻橡皮鴨子,你才能繼續下一步。

當你有了橡皮鴨子之後,你需要把鴨鴨鄭重地放在桌上,跟人家鴨鴨說清楚,並且可以的話,你想用人家檢查一下代碼。

然後,你就可以跟鴨鴨解釋,你的代碼本來應該是做什麼的,然後深入細節,逐行解釋你的代碼。

以上就是整個用鴨鴨找bug的流程啦!

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

其實,這個原理在於,你在解釋的過程中,你會告訴鴨鴨你的下一步是做什麼,一條一條的理清自己的思路,你會意識的你現在做的並不是你實際要做的東西。

這樣,你就能知道你的問題出在哪,bug就這樣被找見啦~

而這個時候的鴨鴨,依然平靜着坐在你的桌前,靜靜的與你分享找到bug的喜悅,爲保住你僅剩的頭髮感到欣慰。


程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!


注意!在緊急情況下,是可以用你的同事代替鴨子的。當然,在通常情況下,大家還是更傾向把錯誤告訴鴨鴨,而不是同事。

在網上也有網友現身說法,告訴我們這件事的可行性。

你們回覆可能是覺着程序員對着鴨子說話很好笑,而我回復是因爲想到一個畫面很好笑。想象一下,一個程序員正解釋着自己的代碼,解釋到bug的時候猛地發現了自己錯誤的地方,然後激動地用手勒着鴨鴨的脖子狂喊“爲什麼居然犯了這個簡單的錯?!”“我是不是瞎了?!”

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

底下還有程序員回覆:

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

作爲程序員,我可以很負責任地告訴你,確實是這樣沒有錯了。因爲大家找出bug的時候比較激動,我們班都不讓帶鴨子了,大家找到bug的時候一激動,就是把鴨鴨拋起來或者摔牆上。

而且越來越多的人出現在回覆裏,來說明用橡皮鴨子來找bug是程序員傑一件很普遍的事情。

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

我在一家創業公司工作,在你剛入職的時候,拿到的一系列東西里,就包括一隻橡皮鴨子。我們公司還有個大一點的鴨子,專門爲了更難的問題準備的。有時候可能一個鴨子不夠,你還得借你鄰桌同事的鴨子來解決問題。

有一次,有個問題我們一隻琢磨不出來,所以我們就把鴨子都召集起來,在鴨鴨之神的保佑下,我們才順利的相處解決辦法來。

這些鴨鴨救了很多人的命,像它們這樣的英雄是應該得到尊敬的。

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

事實上,我用橡皮鴨子來寫作。解釋我現在正在做的事,我預期目標,以及我從A點達到B點的不同方法。除了這些,還有很多不同的問題,在我跟鴨子解釋爲什麼我能或者不能去做這些事的時候,我都會順利地找到解決問題的辦法。我愛橡皮鴨理論。

程序員找bug的祕密武器居然是浴室常用的橡皮鴨子!

前程序員,證明鴨鴨找bug確實是真的,我們辦公室沒有鴨子,所以我鄰桌的程序員,就會像用鴨子那樣來用我。(只是解釋用,不會扔哦。)很多次,我都會聽到鄰桌幽幽地飄來一句“你能變一會鴨子嗎?”

很多小夥伴可能會疑惑,爲什麼跟橡皮鴨解釋會這麼有用呢?

livejournal網站上的一位網友給出了自己的答案。

“我覺得,把你存在的問題變成口頭上的詢問,會讓你的大腦換個角度去考慮問題。你把問題轉變一下,從回答問題的人的角度來看問題,就能讓你的大腦設身處地地爲回答問題的人着想。”

在你盯着一行行代碼試圖找出bug的時候,你還是創造這些代碼的程序員思維。

而你在跟鴨鴨對話,一問一答之間,你就會跳出寫代碼的程序員思維,從回答問題的角度來考慮,以旁觀者的視角就更容易找出bug啦~

最後也別忘了跟幫助你的鴨鴨說一聲謝謝哦。

相关文章