先思考后debug

忠告:

在我加入貝爾實(shí)驗(yàn)室一年多后,Gerard Holzmann設(shè)計(jì)了一個很小的交換式制圖語言,我開始和Ken Thompson一起在開發(fā)針對這種語言的即時編譯器上做兩個人同時編程。我打字比較快,所以我坐在電腦前,Ken站在我身后看我編程。我們開發(fā)的很快,但經(jīng)常會遇到問題,而且可以看出來出錯了——畢竟這是一個圖形化的編程語言。當(dāng)程序出錯時,我本能的一頭扎進(jìn)問題,檢查報錯跟蹤信息,添加調(diào)試打印語句,啟動調(diào)試器,等等,但Ken只是站在那思考,完全不理會我也不查看我們寫的出問題的代碼。一段時間后我發(fā)現(xiàn)一個規(guī)律,Ken經(jīng)常會比我先找到問題出在什么地方,而且會突然的喊一嗓子,“我知道什么地方的問題了?!泵看嗡呐袛喽己軠?zhǔn)確。我認(rèn)識到,Ken已經(jīng)在腦海里構(gòu)建了代碼的模型,當(dāng)有問題出現(xiàn)時,那是他腦子里的模型出了問題。在思考為什么會發(fā)生這些錯誤時,他能憑直覺找到模型中什么地方不對或發(fā)現(xiàn)寫的代碼跟這個模式什么地方有出入。

Ken教會了我一個極其重要的習(xí)慣:糾錯前先思考。如果你一頭扎進(jìn)問題中,你只能解決當(dāng)前代碼的問題,但如果你先思考這個錯誤,這個bug究竟為什么會引入?你會發(fā)現(xiàn)并且糾正一個更高層次的問題,進(jìn)而改進(jìn)了系統(tǒng)設(shè)計(jì),防止了更多bug的出現(xiàn)。

我認(rèn)識到這種編程思考模式非常的重要。有些人癡迷于逐行的、使用各種工具來調(diào)試所有的東西。但我現(xiàn)在相信,思考——不看代碼的思考——是最好的調(diào)試途徑,因?yàn)樗茏屇汩_發(fā)出更好的軟件。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容