怎樣閱讀源代碼,怎樣提高閱讀源代碼的效率


就我自己閱讀安卓源代碼的經驗,本人研究過 settings,launcher,Sysupdate ,framework /services ,recovery的部分源代碼。而且成功改動google留下來的bug.

假設就是熟悉代碼,不帶問題的去看。看的會比較累。可是仍然是有方法能夠借鑒的,事實上這種方法。也是生活經驗得來的,大家都會的。

就是從總體到局部。由總而分。

比方:你想了解recovery的代碼,就應該先了解這個Recovery的運作流程。網上有非常多人總結了,總概括圖,先有個大概的了解。

第二步,再尋找更具體的說明資料,把更為具體的方法也了解一下。

第三步,去看源代碼,看源代碼的時候,注意,也是先把所有的方法名看一下。而且做下筆記。然后才細致的一個模塊一個模塊的看源代碼。跳躍着看源代碼,千萬不要從上到下去看。一個 類上萬行代碼,所有看下來。頭都大了。而且混亂。


假設帶着問題去看源代碼。那效率會更高,大家都知道怎么去找源代碼,找相關的方法來看。


推薦工具:SouceInsight ,eclipse, UE,NOTEPAD++

關鍵:一次就看一個點,別貪多。要有一定的基礎,別像我這樣,遇到一個函數又去百度,一個模塊看了2個月才熟悉,才干改動。



下面是網友推薦的好方法:

1-----------------------------------------------------------------------------

每一個人看源代碼有他自己的方式!


假設為了讀源代碼而去讀源代碼那么我認為你會很痛苦。 由於可能你是沒有目的的去讀! 一個類少則幾百。多的幾千行, 看下去要死人的!
在你遇到某些問題須要跟源代碼去解決的時候。源代碼里面去翻你須要的那部分。這樣讀起來會比較輕松點, 每次遇到問題找一部分, 並且同5L說的,每次鑽一個問題就鑽深一點! 當然找到須要的源代碼是要對源代碼的結構非常了解的!


2-----------------------------------------------------------------------------

先要搞清楚這個類是干什么用的,

然后搞清楚類里面的方法是干什么用的。

提出問題。比方說這種方法是怎樣實現、這個類的某個功能是怎樣實現的、構造方法為什么要這樣寫之類的。

然后帶着問題去尋找答案。

找到答案后再提出新的問題~

我看代碼的方式就是這種

3-----------------------------------------------------------------------------

方法:
1.先了解業務;
2.熟悉需求文檔和文檔。如無文檔則先熟悉系統的功能和業務流程;
3.掌握開發的技術;
4.看代碼的同一時候執行系統的相關功能。



4-----------------------------------------------------------------------------


要想高速並高效地閱讀源代碼,一定要有好方法,不然看着會挺費勁,當然。用什么方法取決於詳細的情況。我就把自己總結的方法給大家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。







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM