什麼是橡皮鴨?

有史以來最大的一些問題是透過和一隻橡皮鴨交談解決的。等等,什麼?...

很少有事情比執行程式無數次卻發現它仍然無法啟動更糟糕。即使是最好的程式設計師也知道它是什麼樣子。

Seven yellow rubber ducks sitting in water

你在盯著一塊你已經琢磨了幾個小時的程式碼。語法看起來正確,間距一致,變數命名恰當。。。那是什麼原因呢?

也許你需要一個新的方法來除錯。你會驚訝地發現,其中一種行之有效的方法,奇怪的是,涉及到一個浴缸的各種玩具。

什麼是橡皮鴨除錯(rubber duck debugging)?

這最好透過一個小故事來解釋。想象一下:你是一個程式設計師,和一群人一起工作。你在做你的日常工作,編碼任何你需要編碼的東西,然後你就遇到了問題。不管出於什麼原因,這個程式都沒有發揮應有的作用。

所以你決定走進大廳,告訴你的同事你正在對付一個頑固的蟲子。他們同意幫你解決問題,問你到底出了什麼問題。你開始詳細地解釋這個問題,發現在你的解釋過程中,你找到了一個解決辦法。

事實上,這種情況在現實世界中發生的頻率比你想象的要高。你可能想知道這和橡皮鴨有什麼關係。嗯,你可以向一個塑膠黃色的夥伴(或任何無生命的物體)傾訴,而不是打擾別人。

最好的部分?當你知道你的鴨子不會因為你的長篇大論而評判你時,你會感到安慰。如果您發現自己需要經常除錯,請檢視下面列出的最常見的程式設計和編碼錯誤。

“橡皮鴨除錯”一詞從何而來?

“橡皮鴨除錯”引用了安德魯·亨特和大衛·托馬斯的程式設計書《實用程式設計師:從熟練工到大師》中的一個故事。在這種情況下,程式設計師會隨身攜帶一個橡皮鴨,並透過強迫自己逐行向橡皮鴨解釋來除錯程式碼。

為什麼橡皮鴨除錯工作?

通常,在描述程式碼應該做什麼的時候,您會觀察程式碼實際做了什麼,然後發現事情沒有排成一行。這就是為什麼人們說教一門學科是學習它的最好方法之一。你必須從不同的角度評估問題,以幫助別人理解,這有助於你理解。

使用這種方法最重要的部分是你對它的承諾。是的,這樣徹底的一邊倒的談話可能會讓人覺得非常愚蠢。但是傾注如此多的精力讓另一個人(真實的,想象的,或者用橡膠做的)透過你的問題,正是讓問題看起來能自己解決的。

這種方法之所以能夠很好地工作,是因為程式碼中的大多數錯誤都是由於缺乏向軟體提供明確的資訊和指令造成的。計算機不能理解含糊不清的指令。假設你的鴨子對你的問題一無所知,你就不得不描述所有的細節。結果發現你並沒有像你想象的那樣理解每件事。

如何使用橡皮鴨法?

只有三個簡單的步驟,橡皮鴨:

  1. 假設你的鴨子對你的問題一無所知。陳述問題,事情目前的狀況,以及你想要完成的目標。
  2. 解釋事物的流動。發生什麼事了?仔細檢查過程中的每一個步驟,不要遺漏任何細節。
  3. 頓悟。

將該方法應用於實際問題

這種簡便的方法是由程式設計師發明的,但它肯定可以應用於程式設計之外的問題。怎樣?在這裡,讓我們建立另一個想象的場景:你剛剛買了一個新的冰箱為你的房子。

你把新冰箱運到家裡,放在廚房的位置上。你把舊冰箱裡的所有東西都轉移到新冰箱裡,把舊冰箱扔掉。一天結束了,你就上床睡覺。當你第二天早上醒來時,開啟冰箱門發現你所有的食物一夜之間都壞了!

當然,你很憤怒,開始向家人發洩情緒。”怎麼會這樣?我付了錢,把它拿回來,把裡面的東西都搬走了,當它通電的時候,它應該有難以置信的溫度控制

哦。你忘了把那該死的東西插上。

這有點尷尬,但至少你現在知道問題所在了。那是因為你從頭到尾花時間考慮了整個情況。有時候,當你對一個過程如此深入和熟悉的時候,你不會注意到最明顯的問題就在你身邊蔓延。

將方法應用於程式碼

例如,我們將討論一些示例Python程式碼。正如我們已經演示過的,你可以用你信任的橡皮鴨來解決各種各樣的問題。這個方法可以應用於任何你正在使用的程式語言。

我們要列印1到5的數字。所以,你繼續鍵入所有程式碼:

for x in range(5): print(x, end=" ")Output: 0 1 2 3 4

呵呵。真奇怪。您要求編譯器列印一個五位數的範圍。有什麼問題嗎?讓我們把所有的可能性都考慮一下。您的語法是正確的,因為程式碼執行時沒有錯誤。並不是因為缺少任何引數,因為start和step引數是可選的。。。

堅持。range函式返回一個數字序列,按1遞增(預設情況下),並在設定的上限之前停止。但是範圍從哪裡開始呢?在Python中,除非指定,否則範圍從零開始。

現在,你知道你應該寫作。

for x in range(5): print(x+1, end=" ")Output: 1 2 3 4 5

相關:學習Python程式設計的5個最佳網站

你的程式設計夥伴

雖然不能告訴你你的程式碼到底哪裡出錯了,但橡皮鴨已經幫助了各地的程式設計師。下次程式設計時遇到bug時,試著抓一隻橡皮鴨(或者其他物件或人來充當橡皮鴨),看看這種解決問題的方法是否適合您。

誰會想到橡皮鴨不僅僅是一個洗澡玩具?

  • 發表於 2021-03-28 14:29
  • 閱讀 ( 55 )
  • 分類:程式設計

你可能感興趣的文章

潔食(kosher)和清真(halal)的區別

...個非常流行的概念,甚至全世界的非***都知道。它是關於什麼是適合和適合***,並滲透到生活的方方面面。不過,在這篇文章中,我們將把自己侷限於食物,以及***可以消費什麼和如何消費,尤其是肉類。很少有人知道,像***一...

  • 發佈於 2020-11-03 19:03
  • 閲讀 ( 46 )

你從未聽說過的最奇怪的程式設計原理

... 當你忽略這個會發生什麼?你最終得到了軟體原理: ...

  • 發佈於 2021-03-12 02:06
  • 閲讀 ( 62 )

即將推出的chrome作業系統功能可在裝置鎖定時保護usb埠

...但谷歌也正在採取措施來解決這個問題。 有一種被稱為橡皮鴨的惡意USB工具,它模擬鍵盤,每分鐘可以在**鍵盤的任何機器上注入多達1000次按鍵。只要一個潛在的不法分子有物理訪問您的計算機,他們所需要做的就是**USB金鑰,...

  • 發佈於 2021-04-04 02:34
  • 閲讀 ( 50 )

如何安全地刪除windows中的垃圾箱(回收站)

...為有無數的檔案恢復程式用於恢復刪除的資料;這就是為什麼您可能需要使用橡皮擦之類的程式來安全地刪除您的個人資料。 相關:如何恢復刪除的檔案:最終指南 注意:雖然我們今天將重點介紹橡皮擦,但實際上有幾種不同...

  • 發佈於 2021-04-11 04:44
  • 閲讀 ( 25 )

50多個工具和技術,以消除影象背景在photoshop,pt 2

...移除背景的文章! 今天,我們將介紹掩蔽影象,以及為什麼有些人喜歡掩蔽而不是擦除大塊的影象,以及一系列使用掩蔽影象擦除方法移除所有這些影象背景的基本方法。 遮蔽影象,刪除它們…有什麼區別? 上週,我們討...

  • 發佈於 2021-04-12 23:21
  • 閲讀 ( 45 )

谷歌的自動駕駛汽車沒有撞到追鴨子的奶奶

...燈外,谷歌的自動駕駛汽車也開始熟悉騎著電動輪椅追逐鴨子的流浪叛徒奶奶。
 谷歌最初並沒有具體說明,它與《瘋狂的麥克斯·弗裡之路》眾多母親中的一個發生在山景城還是奧斯汀。但谷歌發言人後來澄清說...

  • 發佈於 2021-05-01 07:19
  • 閲讀 ( 46 )

在ces尋找愛情:對於一個十幾歲的孩子來說很難

...個留著令人印象深刻的鬍鬚的年輕人問他是否能幫我做點什麼。他絕對不能。我抓到了一些免費的花生M&M,然後拖著腳走進我的個人地獄。
 
 Marshall是一家老式揚聲...

  • 發佈於 2021-05-03 00:08
  • 閲讀 ( 54 )

機器人駭客先生的報告:康特納斯和骯髒的usb驅動器

...週,我們都會瀏覽Robot先生的電腦活動——誰被黑了,為什麼被黑,以及需要多少魔法才能讓它們真正工作。
 ***S P O I L E R S F O L O W公司***
 所以那是很多機器人!離解的貼上!布萊希特距離效應!阿爾夫!在醞...

  • 發佈於 2021-05-07 00:35
  • 閲讀 ( 42 )

讓這隻機械手蜈蚣告訴你影子世界的感受

...種外骨骼,但它承諾能實際區分各種材料,所以撿起一隻橡皮鴨和抓起一塊石頭會有不同的感覺。因為它實際上可以約束你的手的運動,所以它應該比基於複雜振動或熱的觸覺系統更善於模仿實體物件,儘管它們提供了自己的好...

  • 發佈於 2021-05-07 03:54
  • 閲讀 ( 28 )

壟斷將取代靴子,頂針,手推車件在新版本

...***報道,原來的靴子、頂針和手推車將被霸王龍、企鵝和橡皮鴨取代。...

  • 發佈於 2021-05-10 08:26
  • 閲讀 ( 28 )
jiyw6750
jiyw6750

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦