1.快速總體瞭解整個代碼 瞭解基本知識及背景
2.若該程式是可安裝或者可啟動並執行程式 那麼安裝運行,瞭解其功能
3.按照功能分模組,大模組化為小模組,大問題化解為小問題 逐一進行解決
4.最好按照某種思路理出幾條線,順著這幾條線一步步深入進去
5.利用比較好的代碼閱讀工具,這裡我推薦 source insight 對於資料結構和類的定義可以用這個工具很簡單的追蹤到
6.理清函數的調用方式,利用source insight 找出函數的調用過程
7.關鍵的資料結構和類的繼承派生要畫出一個自己能理解的圖來,這樣在看代碼的時候可以隨時對圖形進行修改,也便於自己理解
8.大型代碼定義部分 都是可以分成幾個模組來看的
9.看一個函數先看他的傳回值和傳入的參數,然後看該函數到底做了什麼,參數帶進來的是什麼,傳回值或引用帶走的又是什麼
10. 用電腦的思維方式去看代碼,用人的思維方式去總結代碼 不要片面性的看語言和文法,那樣看完了都不知道程式幹什麼用的
11.等把代碼看明白了之後,最好在代碼邊上做詳細的注釋,以後回來看,或者使用這些代碼的時候,你就會發現注釋太有用了
12.代碼中使用到的特殊機制要弄清楚,例如看通訊端 你就要把select、poll、epoll這些機制弄明白 可以通過查閱其他資料看這些事件機制
13.看完代碼之後,能用自己的語言講出來這是做什麼的,怎麼做的,那麼看代碼就達到一個層次了
14.看結構體或者類很重要啊,首先要結合著,程式碼搜尋結構體定義的變數是做什麼用的,改結構體在什麼地方調用過,如何建立的,如何刪除的,如何初始化的,如何使用的
對結構體有個大體瞭解
15.看某個結構體或者函數引用的地方 非常重要 有助於你理解這個結構體在代碼中的作用,
注意:
第一個步驟,快速探索一定要迅速 不可糾結於某個小問題 要從整體宏觀上把握和理解 這個步驟有文檔最好了
第二個步驟,功能性的東西要瞭解 大膽猜測,小心驗證
第三個步驟,具體到某個功能模組就要仔細看,分清楚,深入進去,一定要真正理解,深入進去是對某些資料走向或者思路的深入,而不是對文法和語言的深入
第四個步驟,沿著幾條線走,不容易迷失方向,看代碼的時候也不會暈----------資料結構最好畫個圖 初始化和銷毀的代碼要好好看,再看操作性代碼就瞭然了