小黃鴨除錯法-程式猿修煉之道

倔強100%發表於2020-11-18

什麼是小黃鴨除錯法

小黃鴨除錯法(又稱橡皮鴨除錯法,黃鴨除蟲法)是軟體工程中使用的除錯程式碼方法之一。此概念是參照於一個來自《程式設計師修煉之道》書中的一個故事。傳說中程式大師隨身攜帶一隻小黃鴨,在除錯程式碼的時候會在桌上放上這隻小黃鴨,然後詳細地向鴨子解釋每行程式碼。

小黃鴨除錯法適用場景

example A

程式猿A:又報錯了,明明程式碼看起來沒問題啊。。。
程式猿B:敲鍵盤。
程式猿A:明明什麼都沒做,怎麼就報錯了呢?
程式猿B:你在講鬼故事嗎?
程式猿A:幫我看一下,這裡哪出現了問題?
程式猿B:這寫的啥啊?
程式猿A:balabala,哦!我知道了。。。

example B

程式猿A:這又是個什麼報錯,這一串英文是什麼鬼。
程式猿B:(我是一隻小黃鴨,我不會說話)
程式猿A:(摳頭皮)
程式猿B:(我是一隻小黃鴨,我不會說話)
程式猿A:(吃手指)
程式猿B:(我是一隻小黃鴨,我不會說話)
程式猿A:百度……半小時後
程式猿B:找到錯誤了嗎?
程式猿A:你來幫我看一下,我先這樣,再這樣,然後這樣,沒問題啊,怎麼就報錯了。
程式猿B:你在說啥?
程式猿A:就是balabala,bilibili,我知道了!!!

小黃鴨除錯法先決條件

由以上例子可以得知程式猿B從頭到尾只是一個工具人,並沒有什麼作用。
這只是個名字,一個代號。你可以叫程式猿B,我也可以叫程式猿B,他們都可以。
因此萬物皆可為程式猿B,那麼小黃鴨也可以。
所以只需要有一隻小黃鴨即可觸發小黃鴨除錯法的充分不必要條件
所以只需要有一隻小黃鴨即可觸發解決問題的必要不充分條件

得出公式:
codeMonkeyA me = new codeMonkeyA();
codeMonkeyB yellowDuck = new codeMonkeyB();
while(!problem.isSolve){
me.say();
yellowDuck.silent();
}
return problem.isSolve;

小黃鴨除錯法最佳實踐

  • 獲取一隻小黃鴨
    – channelA:點外賣送一隻
    – channelB:淘寶買一隻
    – channelC:生日禮物收到一隻
    – channelD:new一隻小黃鴨

在這裡插入圖片描述

  • 遇到問題,對著小黃鴨(工具鴨)balabala
    – methodA:肉眼看程式碼balabala
    – methodB:一邊debug,一邊balabala
    – methodC:一邊摳頭,一邊balabala

  • 靈光一閃,問題解決
    – situationA:我知道了,原來是這樣。
    – situationB:臥槽,這真是一個大坑。
    – situationC:這個鍋我不接,有人改了程式碼。

總結

小黃鴨除錯法實則是通過對著小黃鴨自言自語來整理程式猿思路,從而達到山窮水盡疑無路,柳暗花明又一村的豁然開朗之境。相較於摳頭除錯法啃手指除錯法可以更高效、更健康的發現和解決問題,建議程式猿們多加練習和實踐,早日成為程式大師。

相關文章