成為一名更好的程式設計師:如何閱讀原始碼

codingpy發表於2015-11-28

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

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

成為一名更好的程式設計師:如何閱讀原始碼

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

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

從頭開始

竅門就是給自己一個起點。我是這樣做的。我通過-h選項執行程式,並呼叫help命令。之後我複製其中一條help文件字串,以此為檢索詞搜尋一遍程式碼庫,找到這個幫助文件所在地方。通常情況下,呼叫help命令之後你會發現離程式的主入口點很近了。

辨明輪廓

找到主入口點之後,我會執行幾個文件中提供的示例。然後,我會試著追蹤主要的程式碼塊,大致瞭解下每個部分是如何連線起來的。

我會問自己,是否存在一個管理程式,負責呼叫一堆幫助函式和類?是不是有一些類是平級關係,相互之間輪流交換控制權?是不是有一個程式逐步執行的主任務佇列?

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

勤做筆記

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

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

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

融匯貫通

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

相關文章