1. 程式人生 > >程式設計師找bug的祕密武器,居然是浴室常用的橡皮鴨子!

程式設計師找bug的祕密武器,居然是浴室常用的橡皮鴨子!

程式設計師最大的煩惱是什麼?無非就是因為在程式設計的過程中一個又一個bug的出現。

也許你會為了找程式碼裡的bug,困在程式碼的世界裡幾個小時甚至幾天的時間。

在被bug日復一日困住的同時,程式設計師為了保住最後的頭髮,所以他們找了一種找bug的祕密武器——Rubber Duck Debugging,橡皮鴨除錯法(又名:小黃鴨除錯法)。
在這裡插入圖片描述
“橡皮鴨除錯法”並不是指橡皮鴨成精了,能自己找bug哦!它要是成精能自己找bug了,那估計這個世界就沒我們程式設計師什麼事了!

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

“我自己是一名從事了5年前端的老程式設計師,辭職目前在做講師,今年年初我花了一個月整理了一份最適合2019年學習的web前端乾貨,從最基礎的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小夥伴,web前端學習群957389100,這裡是小白聚集地,歡迎初學和進階中的小夥伴。"

“橡皮鴨除錯法”,這個方法在除錯界是很出眾的,實施起來相當方便和簡易,幾乎可以隨時隨地地實驗,幾乎不需要藉助任何的軟體和硬體的支援,你甚至可以把你的程式打印出來,在紙面上進行除錯。
在這裡插入圖片描述
那麼,具體是怎麼操作的呢?

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

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

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

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

以上就是整個用鴨鴨找bug的流程啦!
在這裡插入圖片描述
其實,這個原理在於,你在解釋的過程中,你會告訴鴨鴨你的下一步是做什麼,一條一條的理清自己的思路,你會意識的你現在做的並不是你實際要做的東西。

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

而這個時候的鴨鴨,依然平靜著坐在你的桌前,靜靜的與你分享找到bug的喜悅,為保住你僅剩的頭髮感到欣慰。
在這裡插入圖片描述


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

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

你們回覆可能是覺著程式設計師對著鴨子說話很好笑,而我回復是因為想到一個畫面很好笑。想象一下,一個程式設計師正解釋著自己的程式碼,解釋到bug的時候猛地發現了自己錯誤的地方,然後激動地用手勒著鴨鴨的脖子狂喊“為什麼居然犯了這個簡單的錯?!”“我是不是瞎了?!”
在這裡插入圖片描述
底下還有程式設計師回覆:
在這裡插入圖片描述
作為程式設計師,我可以很負責任地告訴你,確實是這樣沒有錯了。因為大家找出bug的時候比較激動,我們班都不讓帶鴨子了,大家找到bug的時候一激動,就是把鴨鴨拋起來或者摔牆上。

而且越來越多的人出現在回覆裡,來說明用橡皮鴨子來找bug是程式設計師傑一件很普遍的事情。
在這裡插入圖片描述
我以前在一家創業公司工作,在你剛入職的時候,拿到的一系列東西里,就包括一隻橡皮鴨子。我們公司還有個大一點的鴨子,專門為了更難的問題準備的。有時候可能一個鴨子不夠,你還得借你鄰桌同事的鴨子來解決問題。

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

這些鴨鴨救了很多人的命,像它們這樣的英雄是應該得到尊敬的。
在這裡插入圖片描述
事實上,我用橡皮鴨子來寫作。解釋我現在正在做的事,我預期目標,以及我從A點達到B點的不同方法。除了這些,還有很多不同的問題,在我跟鴨子解釋為什麼我能或者不能去做這些事的時候,我都會順利地找到解決問題的辦法。我愛橡皮鴨理論。
在這裡插入圖片描述
前程式設計師,證明鴨鴨找bug確實是真的,我們辦公室沒有鴨子,所以我鄰桌的程式設計師,就會像用鴨子那樣來用我。(只是解釋用,不會扔哦。)很多次,我都會聽到鄰桌幽幽地飄來一句“你能變一會鴨子嗎?”

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

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

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

在你盯著一行行程式碼試圖找出bug的時候,你還是創造這些程式碼的程式設計師思維。

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

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