閱讀代碼就像閱讀猶太法典
導讀: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 ,他對閱讀不熟悉代碼的看法是,自己重寫。 關于閱讀代碼,如果您有其他建議,歡迎在評論或微博中分享。
來自: blog.jobbole.com