如何閱讀源代碼

分析一個源代碼,一個有效的方法是
1、閱讀源代碼的說明文檔,比如本例中的README, 作者寫的非常的詳細,仔細讀過之後,在閱讀程序的時候往往能夠從README文件中找到相應的說明,從而簡化了源程序的閱讀工作。
2、如果源代碼有文檔目錄,一般爲doc或者docs, 最好也在閱讀源程序之前仔細閱讀,因爲這些文檔同樣起了很好的說明註釋作用。
3、從makefile文件入手,分析源代碼的層次結構,找出哪個是主程序,哪些是函數包。這對於快速把握程序結構有很大幫助。
4、從main函數入手,一步一步往下閱讀,遇到可以猜測出意思來的簡單的函數,可以跳過。但是一定要注意程序中使用的全局變量(如果是C程序),可以把關鍵的數據結構說明拷貝到一個文本編輯器中以便隨時查找。
5、分析函數包(針對C程序),要注意哪些是全局函數,哪些是內部使用的函數,注意extern關鍵字。對於變量,也需要同樣注意。先分析清楚內部函數,再來分析外部函數,因爲內部函數肯定是在外部函數中被調用的。
6、需要說明的是數據結構的重要性:對於一個C程序來說,所有的函數都是在操作同一些數據,而由於沒有較好的封裝性,這些數據可能出現在程序的任何地方,被任何函數修改,所以一定要注意這些數據的定義和意義,也要注意是哪些函數在對它們進行操作,做了哪些改變。
7、 在閱讀程序的同時,最好能夠把程序存入到cvs之類的版本控制器中去,在需要的時候可以對源代碼做一些修改試驗,因爲動手修改是比僅僅是閱讀要好得多的讀 程序的方法。在你修改運行程序的時候,可以從cvs中把原來的代碼調出來與你改動的部分進行比較(diff命令), 可以看出一些源代碼的優缺點並且能夠實際的練習自己的編程技術。
8、閱讀程序的同時,要注意一些小工具的使用,能夠提高速度,比如vi中的查找功能,模式匹配查找,做標記,還有grep,find這兩個最強大最常用的文本搜索工具的使用。


對於一個Unix/Linux下面以命令行方式運行的程序,有這麼一些套路,大家可以在閱讀程序的時候作爲參考。
1、在程序開頭,往往都是分析命令行,根據命令行參數對一些變量或者數組,或者結構賦值,後面的程序就是根據這些變量來進行不同的操作。
2、分析命令行之後,進行數據準備,往往是計數器清空,結構清零等等。
3、在程序中間有一些預編譯選項,可以在makefile中找到相應部分。
4、注意程序中對於日誌的處理,和調試選項打開的時候做的動作,這些對於調試程序有很大的幫助。
5、注意多線程對數據的操作。(這在本例中沒有涉及)

發佈了20 篇原創文章 · 獲贊 12 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章