幾次想閱讀源碼,但是每回都堅持不下去,畢竟讀源碼真的是一件很難得事情。隨便一份源碼,動輒幾百個類,每個類幾百行,沒點毅力真的堅持不下來。當然,也有閱讀方法的緣故。
直到我看到了一本書《通用源碼閱讀指導書》,感覺才找到了源碼閱讀的方法,也正是在這本書的指導下,我讀完了第一份開源源碼MyBatis。
1 意義與難點
這本書最開始講了源碼閱讀的優點,作者總結了四點:
- 透徹地理解項目的實現原理
- 接觸到成熟和先進的架構方案
- 學習到可靠與巧妙的實施技巧
- 發現自身知識盲點,提升自身知識儲備
然后講解了為什么閱讀源碼十分困難,作者總結原因為每一個優秀的工程項目都凝聚了眾多開發者的縝密思維邏輯;每一個優秀的工程項目都經歷了從雛形到成熟的曲折演化過程。最終,這些思維邏輯和演化過程都會投射和堆疊到源碼上,使得源碼閱讀的過程是一個通過源碼去逆推思維邏輯和演化過程的工作,因此十分困難。
2 源碼選擇
閱讀源碼的一個重要工作就是選擇合適的源碼,作者總結了選擇源碼的幾個緯度:
- 項目的成熟度
- 項目的應用廣度
- 項目的涉及面
- 項目的規模
并給出了每個緯度的評判指標。
3 源碼閱讀方法
選好源碼項目之后,要做的就是閱讀源碼。
作者介紹了源碼閱讀的方法、技巧、經驗。主要包括兩個大的步驟:
- 項目初探
- 源碼閱讀
在項目初探環節,主要是通過斷點運行項目,然后分析項目的整體框架、跳轉流向。而源碼閱讀部分則是最為主要的閱讀環節。
在源碼閱讀環節,作者總結了許多的源碼閱讀方法。
4 源碼閱讀
作者介紹了以下幾個主要的閱讀方法:
- 模塊分析:通讀整個模塊中的類,分析模塊的主要功能。
- 模塊歸類:按照模塊功能將模塊進行分類,例如分為基礎模塊、核心模塊、解析模塊等等。
- 自底向上:閱讀源碼的一個重要的思路就是自底向上,先閱讀外圍模塊,再深入核心模塊,這樣可以避免閱讀源碼時牽扯到太多的未閱讀模塊,打亂源碼閱讀的思路。
- 合理猜測:閱讀源碼時,可以根據功能合理猜測其具體實現,然后再通過源碼分析是否和猜測一樣。這樣可以提升源碼閱讀的效率,也能提升自己的架構能力。
- 類比閱讀:可以通過相似代碼的比較,找出架構的異同點,然后分析這樣架構的意義。
- 善于匯總:需要不斷匯總每個模塊的含義,與其他模塊的關系等,從而整體理解整個項目。
- 網格閱讀:作者提出要縱向閱讀以從淺到深,也要橫向閱讀,找準同層次的架構關系。
為了講解以上知識點,作者以MyBatis源碼為例子,通讀了整個源碼。我讀完之后,真的對MyBatis的源碼有了十分透徹的理解。
而在每個章節前,作者還介紹了相關的基礎知識,使得源碼的閱讀比較順暢。
總結
《通用源碼閱讀指導書》是一本很好的源碼閱讀入門書,是一本教會你“如何閱讀源碼”的書籍,也能讓你在源碼閱讀中總結相關的架構知識。
讀完收獲很大,推薦。