閱讀程式碼就像閱讀猶太法典

黃利民發表於2011-12-07

導讀:Alan Skorkin寫過一篇文章,講述他為什麼喜歡閱讀他人程式碼,並建議其他同行也如此。可理解為:閱讀優秀程式碼是提高開發人員修為的一種捷徑  。微軟的資深軟體工程師 Eric Lippert 在答覆同行JeremyK 的問題時也感嘆閱讀程式碼很難

Seth Gordon 給 Joel Spolsky 發過一封電子郵件,分享有關閱讀他人原始碼的一些不錯建議。以下是郵件的譯文:

在以色列的神學院學習8個月後,我開始在波士頓當一個技術作家。

一年多前,我和一位同事正試圖解釋一個Yacc和Perl的怪題,我們列印了部分文件。我們坐下來看程式碼輸出並逐行討論。“現在,由於Yacc的工作方式,當遇到*this*這樣的資料時,它就將執行*this*函式…… *this* 這一行是做什麼的?就*this*這一點,這個混亂的資料結構看起來像什麼?

另一位同事問事情進展如何,我告訴他,“這就像在閱讀猶太法典(Talmud)。”

下面就是猶太法典的閱讀戰術,我認為同樣適用於閱讀原始碼:

1. 結對進行,一個一個相互自言自語讀程式碼。(編注:應該輪著解釋程式碼。)

2. 討論。如果你的搭檔說“這個是X的意思”,當你並不理解或者你有其他看法時,請他作出解釋。

3. 有時候,當在處理一段文字(程式碼)時,很容易找出你能看懂的兩部分。所以,如果有段文字(程式碼)難住你了,可嘗試跳過,稍後返回再看。(最終還是要回到該處的。)

4. 閱讀原文,既要“從內看”,也要“從外看”。“從內看”就是一個字一個字地把原文解釋成英文(或你的母語);“從外看”就是把一段文字詮釋通順的段落。如果只“從內看”,你會只見樹木不見森林;如果只“從外看”,你會只有個寬泛的猜測,也沒有核實細節。

(Joel Spolsky  )謝謝你,Seth!很好的想法!

結語

文章開頭提到的JeremyK ,他對閱讀不熟悉程式碼的看法是,自己重寫。 關於閱讀程式碼,如果您有其他建議,歡迎在評論或微博中分享。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式

閱讀程式碼就像閱讀猶太法典 閱讀程式碼就像閱讀猶太法典

相關文章