看到「為什么我們要閱讀源碼?」文章寫的非常不錯,所以就轉載了。有些同學可能看的一臉懵逼,其實這很正常,這篇文章寫的都是理論和方法,缺少源碼閱讀的實踐。只有在你源碼閱讀達到一定的量以后,你才會真正明白這篇文章是對閱讀源碼很好的歸納和總結。
我這里把這篇文章精簡一下,稍微幫助大家回顧一下重點,然后擴展一下思路,講解一下如何找到適合自己閱讀的源碼。
一、為什么要閱讀源碼,why?
學會基礎的語法和試驗了若干 example 后,我們就火箭般躥到了自己寫代碼打怪贊經(jīng)驗的階段。這樣略過大量閱讀代碼的階段有三個害處。
- 寫代碼的基礎是不牢靠的,打怪升級的過程也是最慢的。道理很簡單 —— 前輩們踩過的坑,總結的經(jīng)驗教訓,你都不得不親自用最慢的法子一點點試著踩一遍。
- 很容易養(yǎng)成 stackoverflow driven 的寫代碼習慣 —— 遇到不知如何寫的代碼,從網(wǎng)上找現(xiàn)成的答案,找個高票的復制粘貼改吧改吧,湊活著完成功能再說。寫代碼的過程中遇到問題,開啟調(diào)試模式,要么設置無數(shù)斷點一步步跟蹤,要么到處打印信息試圖為滿是窟窿的代碼打上補丁,導致整個寫代碼的過程是一部調(diào)代碼的血淚史。
- 你周圍最強的那個工程師的開發(fā)水平的上限就是你的上限。
二、如何閱讀源碼,how?
讀書一般分不同的場景:想要讓自己明智,讀史;想要讓自己靈秀,讀詩;想要讓自己周密,研習數(shù)學;想要讓自己深刻,攻讀哲學等;同樣的道理,代碼的閱讀也分不同的場景,不同場景下的閱讀方法自然不同。
- 為了破案而閱讀代碼;專注,集中力量攻擊且僅攻擊一點是這樣場景下閱讀代碼的主要方式。
- 為了明理而閱讀代碼;經(jīng)驗值增長太慢,要想漲快點怎么辦?主動出擊啊!計算機領域的很多算法,基礎知識,理論,在看過書,讀過文章后我們都似懂非懂,這時,閱讀代碼就是最快地鞏固和加深理解的方式。
- 為了能級躍遷而閱讀代碼;打破平臺期,成就能級躍遷,你需要吸收合適的「光子」。這光子可以是一個開天辟地的項目(比如說 Google 的 Google Map,docker 的 docker,阿里的淘寶等),可是這樣的機會并非總能被你我趕上,大多數(shù)人都是在日復一日地做些并不起眼的,只能緩緩升級的小活,這時候,與其默默沉淪,不如學莊子口中的北冥之魚那樣,沉潛浮動,積蓄能量,等待下一次摶扶搖而上九萬里。這種積蓄能量為躍遷準備的一種方式是讀代碼。讀什么?讀那些基礎地不能再基礎,你認為自己一輩子都不會去寫的那些代碼。比如 linux kernel,比如 OTP。
三、如何找到適合自己閱讀的源碼?
明白閱讀源碼的重要性以及方法后,重要的就是實踐,閱讀期間必然會遇到各種困難,尤其是沒有人一起探討時,更容易放棄,開發(fā)者圓桌會整理一系列關于閱讀源碼的實踐文章與大家一起閱讀、探討、總結,堅持源碼閱讀,堅持更高級的進步。
要閱讀源碼自然要獲取源代碼才行,我們?nèi)ツ睦镎业竭m合自己閱讀的源碼呢?開源組織或平臺是一個不錯的選擇,這些組織或平臺管理著大量的源碼資源和說明文檔,對我們閱讀源碼是非常寶貴的資源。下面列舉幾個比較知名的源碼平臺:
1. GitHub
GitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持 Git 作為唯一的版本庫格式進行托管,故名 GitHub。
GitHub 于 2008 年 4 月 10 日正式上線,除了 Git 代碼倉庫托管及基本的 Web 管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協(xié)作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其注冊用戶已經(jīng)超過350萬,托管版本數(shù)量也是非常之多,其中不乏知名開源項目 Ruby on Rails、jQuery、Python 等。訪問地址:。
2. Apache
軟件基金會(也就是Apache Software Foundation,簡稱為ASF),是專門為運作一個開源軟件項目的Apache 的團體提供支持的非盈利性組織,這個開源軟件的項目就是 Apache 項目。訪問地址:。
3. 基礎庫
各編程語言的基礎庫,比如Java語言的JDK就是一個非常不錯的源碼庫,可以學到很多大師級的代碼實現(xiàn)邏輯和寫法。
短時間內(nèi),可能無法確定自己應該閱讀哪些源碼,我覺得可以從以下三個方面著手考慮:
- 工作相關的;閱讀與自己工作相關的源碼,可以在實際工作中學以致用。
- 感興趣的;興趣是最好的老師,可以推動你探索更多的未知源碼世界。
- 職業(yè)規(guī)劃相關的;根據(jù)自身職業(yè)發(fā)展規(guī)劃閱讀相應的源碼,比如要成為架構師、技術總監(jiān)那么就需要閱讀與該職業(yè)相關的源碼和文檔資源。
【本文為51CTO專欄作者“朱國立”的原創(chuàng)稿件,轉載請通過作者微信公眾號“開發(fā)者圓桌”獲取聯(lián)系和授權】
戳這里,看該作者更多好文
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!