時間:2019-06-24 00:00:00 來源:信盈達 作者:信盈達
對于一個有追求的程序員來說,源碼可謂是必讀不可。但是事實上,閱讀源碼卻是一件令人頭疼的事情,尤其是閱讀別人寫的代碼,往往比看自己的還要犯愁。
IT界有一句影響深遠的話是:Read The Fucking Source Code,這句話既體現了閱讀源碼的重要性,也說明了閱讀源碼對于程序員來說確實是一件令人頭疼的事。

然而,閱讀源碼又是十分重要的。通過閱讀別人的代碼我們可以看出作者的實現途徑,方法,思想,經??磧炐愕脑创a,你也可以靈活應用不同的途徑實現同一效果。
閱讀源碼的重要性,大家可以從前端工程師的等級分類來理解,大概可以分以下幾種:
1、新手:關注任務本身,調包俠,只知道怎么用;
2、高級新手:開始進行任務相關的數據分析,數據預處理,以及參數調優;
3、勝任者:注重特征工程,總結各種算法的適用條件;
4、精通者:深入理解算法的原理,熟悉開源項目的源碼;
5、專家:提出算法改進的建議,創造新的算法。

很多人說“選擇大于努力”,小渡認為“認知決定選擇”,不同程序員的認知層次不同,也導致了技術水平不同。
如果想要持續進步,就要學習更高層次的認知,提前關注和儲備相應的內容。他山之石,可以攻玉,閱讀源碼最大的好處就是可以開拓思維,程序員想更好地提升自己,這篇高效閱讀源碼的干貨可要認真閱讀哦。
那么我們該如何閱讀源碼呢?
首先是要明確目的
比如想研究某個算法的實現,抑或想參考實現并用其他語言二次開發,這個最初的動機會幫助你持續下去,直到實現目的。
在這個過程中,你還需要學會深挖源碼。當你第一次深入成熟的代碼庫時,你可能感覺自己不像開發人員。你可能更像是考古學家、私人調查員或圣經學者。這很好,因為你有一大堆事情需要處理。
如果你有幸能夠從一開始就接觸使用版本控制的代碼庫,那么就該慶祝一下。你可以訪問豐富的元數據,這將使你理解的不僅僅是代碼,還包括上下文,都會容易很多。

其次是合理的步驟
還是“先走通再細究”的思路,比如一讀文檔、二寫demo、三熟悉使用。具體的算法源碼調試呢,在自頂向下地理清代碼組織關系后,可以先從main函數入手,然后打斷點,搞清楚重點函數的流轉過程。
這個環節中注意閱讀規范十分重要,規范是新的注釋。閱讀單元規范,以確定什么功能和模塊是被支持的以及哪些邊界情況要被處理。閱讀集成規范,以了解用戶如何與應用程序進行交互,以及應用程序支持哪些工作流程。
最后是能堅持不懈
很多人最開始都是決心很大,并制定計劃,但在閱讀源碼過程中,難免會出現代碼看不下去,心情煩躁的情況,這個時候,更要堅持,日拱一卒,功不唐捐。
在閱讀源碼中,你可能會發現一些永遠不會使用的函數,或者你可能會發現從未使用過的整個文件。你可能會發現在幾年來沒有被碰過的注釋掉的代碼(gitblame)。不要遲疑,不要花太多時間去思考,不要害怕去掉這些東西。

如果代碼是由于某種原因出現的,會有人在代碼評審中標記該代碼。你的行為還會減少下一個讀者的心理開銷。
最后的最后,小渡再啰嗦一句,你看源碼不要一直抓著細節不放。
這一點,你搞不懂,跳過,看一下段內容。先把架構搞熟??炊渌暮螅诜催^來看前面的。你會恍然大悟,原來是這樣設計的!實在不行,還可以多畫點類圖。在結合注釋,英文注釋看不懂,就百度翻譯。沒注釋,就看方法名字??床欢畣卧~,同樣的翻譯。根據一個方法的名字,應該就能看出來它的作用。
很多時候你看不懂源碼的原因很簡單,其實就是因為你學習的知識少,比如,你經常使用的ifelse等,別人可能包裝成了設計模式。本來幾行代碼搞定的,變成設計模式后,多了好幾個類。沒辦法,好的架構就是容易擴展,為了高度可定制化而生的。作為程序員,你應該盡早放下那種只為完成功能的思想。
記住這些事情,當你發現自己周圍一片荒蕪時,不要感到不舒服。閱讀源碼,不要指望它是一個線性過程,并且不要期望理解全部的100%。注意重要的細節,知道如何挖掘你的問題的答案,你會發現自己能很快理解。

千里之行,始于足下,讓我們追隨大牛的腳步,一起奮斗吧!
轉自:公眾號duing
免費領取試聽卡
申請已經提交
老師會馬上給您安排試聽課程!
申請出錯了
您可以加老師QQ:914865590報名咨詢!