成為一名更好的程序員:如何閱讀源代碼

jopen 9年前發布 | 6K 次閱讀 程序員
 

本文由EarlGrey@編程派編譯,如需轉載,請務必注明作者及出處。

閱讀源代碼有許多益處。你會發現新的架構(construct)和庫,與其他的代碼維護者產生共鳴,但最重要的是學會如何組織代碼,避免因內部極其復雜而變得不可維護。

但是也有一個不好的地方,那就是閱讀源代碼太困難了。每當我看到一個新的代碼庫(code base)時,這種讓人眩暈的感覺就充斥了我的大腦。我的內心告訴我壓根不想趟眼前這趟渾水。

這是(希望是)正常的反應。當我們的大腦接觸過多的新東西,就會產生排斥。造物主賦予我們的這臺強大的模式匹配機器根本找不到規律。所有的抽象(abstraction)都是之前沒見過的,類的名稱也毫無印象。程序又到底是從什么地方開始執行的?

對此,我能給出的一般性建議如下:1. 尋找并建立自己能夠理解的初步基礎,通常就是主要的入口點(main entry point)。2. 從這個基礎開始,逐步探索主要功能。3. 記錄下自己的見聞。

從頭開始

竅門就是給自己一個起點。我是這樣做的。我通過 -h 選項運行程序,并調用help命令。之后我復制其中一條help文檔字符串,以此為檢索詞搜索一遍代碼庫,找到這個幫助文檔所在地方。通常情況下,調用help命令之后你會發現離程序的主入口點很近了。

辨明輪廓

找到主入口點之后,我會運行幾個文檔中提供的示例。然后,我會試著追蹤主要的代碼塊,大致了解下每個部分是如何連接起來的。

我會問自己,是否存在一個管理程序,負責調用一堆幫助函數和類(helper functions and classes)?是不是有一些類是平級關系,相互之間輪流交換控制權?是不是有一個程序逐步執行的主任務隊列?

了解全局有助于你理清小細節。如果你沒有理解程序的主流程就悶頭讀下去,那你很可能會被細枝末節搞得焦頭爛額。

勤做筆記

我習慣直接在代碼中做筆記。做筆記的時候,我會使用特殊的注釋符(例如,使用 #=> ,而非常用的 # ),這樣可以將我自己的筆記與原作者注釋區分開來。

如果碰到巧妙的技巧、不易理解的流程、編程架構(construct)的漂亮使用方式或者是其他任何你想牢記的內容,務必要做筆記。如果你讀不下去了,你也可以做個記錄,提醒自己之后要回去再讀看不懂的部分。

通過寫下你的思緒,你實際上是在把那塊代碼變成你自己寫的。慢慢地,你就會開始在工作中自然地用上新掌握的那些架構(construct)。

融匯貫通

學習編程,是一個反復讀代碼和寫代碼的持續過程。只要你愿意接觸不同的風格、代碼,最終你會形成自己的獨特視角和思維。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!