
閱讀源代碼有許多益處。你會發現新的架構construct和庫,與其他的代碼維護者産生共鳴,但最重要的是學會如何組織代碼,避免因内部極其複雜而變得不可維護。
但是也有一個不好的地方,那就是閱讀源代碼太困難了。每當我看到一個新的代碼庫code base時,這種讓人眩暈的感覺就充斥了我的大腦。我的内心告訴我壓根不想趟眼前這趟渾水。
這是(希望是)正常的反應。當我們的大腦接觸過多的新東西,就會産生排斥。造物主賦予我們的這台強大的模式比對機器根本找不到規律。所有的抽象abstraction都是之前沒見過的,類的名稱也毫無印象。程式又到底是從什麼地方開始執行的?
對此,我能給出的一般性建議如下:1. 尋找并建立自己能夠了解的初步基礎,通常就是主要的入口點main entry point。2. 從這個基礎開始,逐漸探索主要功能。3. 記錄下自己的見聞。
<a></a>
竅門就是給自己一個起點。我是這樣做的。我通過<code>-h</code>選項運作程式,并調用help指令。之後我複制其中一條help文檔字元串,以此為檢索詞搜尋一遍代碼庫,找到這個幫助文檔所在地方。通常情況下,調用help指令之後你會發現離程式的主入口點很近了。
找到主入口點之後,我會運作幾個文檔中提供的示例。然後,我會試着追蹤主要的代碼塊,大緻了解下每個部分是如何連接配接起來的。
我會問自己,是否存在一個管理程式,負責調用一堆幫助函數和類?是不是有一些類是平級關系,互相之間輪流交換控制權?是不是有一個程式逐漸執行的主任務隊列?
了解全局有助于你理清小細節。如果你沒有了解程式的主流程就悶頭讀下去,那你很可能會被細枝末節搞得焦頭爛額。
我習慣直接在代碼中做筆記。做筆記的時候,我會使用特殊的注釋符(例如,使用<code>#=></code>,而非常用的<code>#</code>),這樣可以将我自己的筆記與原作者注釋區分開來。
如果碰到巧妙的技巧、不易了解的流程、程式設計架構construct的漂亮使用方式或者是其他任何你想牢記的内容,務必要做筆記。如果你讀不下去了,你也可以做個記錄,提醒自己之後要回去再讀看不懂的部分。
通過寫下你的思緒,你實際上是在把那塊代碼變成你自己寫的。慢慢地,你就會開始在工作中自然地用上新掌握的那些架構construct。
學習程式設計,是一個反複讀代碼和寫代碼的持續過程。隻要你願意接觸不同的風格、代碼,最終你會形成自己的獨特視角和思維。
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.