如何快速閱讀代碼
如何快速閱讀代碼
每個(gè)程序員所寫(xiě)的代碼都有自己的風(fēng)格,而我們?cè)趨⒖紕e人的代碼的時(shí)候,如何能更快速更好地讀懂和自己編程風(fēng)格的代碼呢?下面,讓我們看看怎么快速閱讀代碼。
1、閱讀源代碼的說(shuō)明文檔,比如本例中的README, 作者寫(xiě)的非常的詳細(xì),仔細(xì)讀過(guò)之后,在閱讀程序的時(shí)候往往能夠從README文件中找到相應(yīng)的說(shuō)明,從而簡(jiǎn)化了源程序的閱讀工作。
2、如果源代碼有文檔目錄,一般為doc或者docs, 最好也在閱讀源程序之前仔細(xì)閱讀,因?yàn)檫@些文檔同樣起了很好的說(shuō)明注釋作用。
3、從makefile文件入手,分析源代碼的層次結(jié)構(gòu),找出哪個(gè)是主程序,哪些是函數(shù)包。這對(duì)于快速把握程序結(jié)構(gòu)有很大幫助。
4、從main函數(shù)入手,一步一步往下閱讀,遇到可以猜測(cè)出意思來(lái)的簡(jiǎn)單的函數(shù),可以跳過(guò)。但是一定要注意程序中使用的全局變量(如果是C程序),可以把關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)說(shuō)明拷貝到一個(gè)文本編輯器中以便隨時(shí)查找。
5、分析函數(shù)包(針對(duì)C程序),要注意哪些是全局函數(shù),哪些是內(nèi)部使用的函數(shù),注意extern關(guān)鍵字。對(duì)于變量,也需要同樣注意。先分析清楚內(nèi)部函數(shù),再來(lái)分析外部函數(shù),因?yàn)閮?nèi)部函數(shù)肯定是在外部函數(shù)中被調(diào)用的。
6、需要說(shuō)明的是數(shù)據(jù)結(jié)構(gòu)的重要性:對(duì)于一個(gè)C程序來(lái)說(shuō),所有的函數(shù)都是在操作同一些數(shù)據(jù),而由于沒(méi)有較好的封裝性,這些數(shù)據(jù)可能出現(xiàn)在程序的任何地方,被任何函數(shù)修改,所以一定要注意這些數(shù)據(jù)的定義和意義,也要注意是哪些函數(shù)在對(duì)它們進(jìn)行操作,做了哪些改變。
7、在閱讀程序的同時(shí),最好能夠把程序存入到cvs之類的版本控制器中去,在需要的時(shí)候可以對(duì)源代碼做一些修改試驗(yàn),因?yàn)閯?dòng)手修改是比僅僅是閱讀要好得多的讀程序的方法。在你修改運(yùn)行程序的時(shí)候,可以從cvs中把原來(lái)的代碼調(diào)出來(lái)與你改動(dòng)的部分進(jìn)行比較(diff命令), 可以看出一些源代碼的優(yōu)缺點(diǎn)并且能夠?qū)嶋H的練習(xí)自己的編程技術(shù)。
8、閱讀程序的同時(shí),要注意一些小工具的使用,能夠提高速度,比如vi中的查找功能,模式匹配查找,做標(biāo)記,還有g(shù)rep,find這兩個(gè)最強(qiáng)大最常用的文本搜索工具的使用。
對(duì)于一個(gè)Unix/Linux下面以命令行方式運(yùn)行的程序,有這么一些套路,大家可以在閱讀程序的時(shí)候作為參考。
1、在程序開(kāi)頭,往往都是分析命令行,根據(jù)命令行參數(shù)對(duì)一些變量或者數(shù)組,或者結(jié)構(gòu)賦值,后面的程序就是根據(jù)這些變量來(lái)進(jìn)行不同的操作。
2、分析命令行之后,進(jìn)行數(shù)據(jù)準(zhǔn)備,往往是計(jì)數(shù)器清空,結(jié)構(gòu)清零等等。
3、在程序中間有一些預(yù)編譯選項(xiàng),可以在makefile中找到相應(yīng)部分。
4、注意程序中對(duì)于日志的處理,和調(diào)試選項(xiàng)打開(kāi)的時(shí)候做的動(dòng)作,這些對(duì)于調(diào)試程序有很大的幫助。
5、注意多線程對(duì)數(shù)據(jù)的操作。