上一篇,我們通過demo,構建了黑盒模型,大致瞭解了項目與demo的關係,以及一個初步流程。
本篇是《如何高效閱讀源碼》專題的第五篇,通過閱讀文檔,來了解項目的概念模型,以及驗證和完善黑盒模型。
本節內容如下:
-
爲什麼要閱讀文檔
-
到哪裏去閱讀文檔
-
如何閱讀文檔
-
如何構建概念模型
-
通過概念模型驗證與完善黑盒模型
爲什麼要閱讀文檔?
Linus大神說過這麼一句話:「Talk is cheap,show me the code」!廣大程序員都奉爲聖經!只是可惜,絕大部分程序員都達不到Linus大神的水平。
對於一個代碼量巨大的項目而言,不論它設計得多麼的精妙,如果沒有文檔的話,一般人很難通過閱讀代碼來理解項目邏輯。而一個清晰明瞭的文檔,對理解項目來說有很大的幫助。
到哪裏去閱讀文檔
我想沒有誰能比項目的開發者更瞭解自己的項目了!所以,最好的文檔就是官方文檔。強烈建議直接閱讀原文,因爲翻譯的文章,多多少少都帶有個人理解,可能理解的是對的,也可能理解的是錯的。翻譯的文章可以作爲參考,以鑑別自己是否理解錯誤。
除了官方網站,也可以通過谷歌搜索一些比較好的技術論壇或博客,來閱讀對應的博客或帖子。官方文檔一般都是比較完整的講述項目,而博客或帖子可能會從一個點來詳細的描述這個項目,對一開始還不是很瞭解項目的人來說,可能更容易理解一些。
在理解了這些點之後,還是要閱讀官方的文檔,來將這些點給串起來,這樣才能對這個項目有一個完整的理解。
如何閱讀文檔
文檔的閱讀不可一蹴而就,就以Spring的文檔來說,Spring下的子項目有很多,每個子項目都有文檔,少的也有大幾十頁,多的甚至上千頁,要一頁一頁的看完,是完全不可能的。那我們該如何去讀呢?
我們要有目的的去讀文檔。我們理解項目的階段不同,目的也就不同。例如,我們現在需要對項目有一個大致的瞭解,需要能構建項目的概念模型。那我們就要去找描述項目概念的相關文檔。
以JUnit爲例子,它的官方網址是:https://junit.org/junit4/。我們需要找到網站裏描述相關概念的文檔。我們會發現,首頁就有對應的條目:
通過閱讀上面列表的文章,我們能大概瞭解到JUnit中有哪些概念:
-
Assertions:斷言,用於判斷測試結果是否符合預期
-
TestRunners:測試執行,各種執行測試的方式。包括下面的參數化測試、理論測試,以及執行JUnit3的相關類等
-
Suite:套件,批量執行測試的類
-
Rules:規則,擴展JUnit的功能,靈活地改變測試方法的行爲
構建概念模型
從上面的幾個概念,再結合我們之前的理解,我們就可以得到一個大致的概念模型:
-
各個Test是測試用例
-
TestRunners用來執行各種測試
-
Assertions用於驗證測試結果是否符合預期
-
Suite用於批量執行測試
-
Rules用於改變測試的行爲
通過概念模型驗證與完善黑盒模型
通過上面的概念模型,結合前面的黑盒模型,我們可以完善黑盒模型:
-
我們既可以編寫測試用例Test,也可以編寫測試套件Suite
-
測試套件Suite可以添加多個測試用例Test
-
通過TestRunners來執行測試
-
通過Assertions來驗證測試結果是否符合預期
-
通過Rules來改變測試的行爲
-
最終通過Result展示結果
總結
本文通過對文檔的理解,梳理出概念模型。並通過概念模型來完善黑盒模型。實際上,隨着我們對項目的理解,黑盒模型會慢慢的變成白盒模型。
有了對項目的概念模型後,下面我們可以真正的來閱讀項目源碼了。