如何提高閱讀源代碼的效率

記得在開源流行之前,我看過的代碼緊限於所參與的項目,能有個幾萬行就不錯哩。後來很多優秀開源項目都相繼蹦出來了,閱讀的代碼量那叫一個大呀!不得不看。我現在掉到android這個大坑裏,每天都要看很多源代碼。以前做過J2EE,看Struts2、Lucene、OSWorkflow、iText等項目的源碼,動機有三:文檔不足、找問題的原因、好奇。當時有個項目用到了Dojo,這傢伙可以說是源碼最多的開源Javascript框架了,文檔卻嚴重不足,也沒什麼人用,只能看源碼了。 

  要想快速並高效地閱讀源碼,一定要有好方法,不然看着會挺費勁,當然,用什麼方法取決於具體的情況。我就把自己總結的方法給大家show一下,互相交流交流:

1、一邊閱讀代碼一邊寫註釋。這是我用過的最好的方法,對代碼理解得更深入,看一些重要代碼或者特別難懂的代碼時挺有用。更何況,註釋也是一種文檔嘛。

2、一邊閱讀代碼一邊繪製UML。這個方法適用於類之間的關係較複雜和調用層次較深的情況,我一般都是先繪製順序圖,然後爲順序圖中的類繪製關係圖。

3、通過Debug來跟蹤程序的主要執行過程,這樣就可以分清主次了,閱讀的時候更有針對性。

4、類的快速閱讀。先弄清楚它在繼承鏈中的位置,看看它的內部狀態,也就是成員變量,一般來說,類的對外接口都是對成員變量的訪問、加工、代理等,然後看看它的對外接口,也就是公有成員函數,識別核心的一個或多個函數,這時候你應該可以大概瞭解這個類的職責或作用了。可能這個類是某個設計模式中的一個組成部分,所以,設計模式的掌握對代碼的快速閱讀也是很有幫助的。

5、帶着問題去閱讀。比如想了解android中的消息機制,那麼看看Looper、Handler、MessegeQueue這幾個類就可以了,其他的不要去看,要不然就跑題了。

  下面列幾個閱讀源碼時所處的情景,在特定場景下用哪些方法:
                      不太熟悉業務邏輯,還不是很清楚它是幹啥的,可以用3、5。
                      代碼量很大,有幾十萬行,甚至百萬行,可以用2、3、5。
                      你無法看見程序的運行過程,比如沒有用戶界面,也有可能是無法運行的,可以用3、5。
                      設計複雜,用了大量的設計模式,調用鏈很深,可以用1、2、3、4、5。
                      時間有限,沒有那麼多時間讓你看源碼,可以用3、5。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章