對于程序員來說,寫代碼永遠(yuǎn)比讀代碼來的舒服。但現(xiàn)實情況是,
程序員常常需要閱讀其他人員寫的代碼,更多的時候這些代碼可能即沒
文檔也沒注釋。不過,好象有個人說過一句話,“代碼之前,了無秘密”。
運用適當(dāng)?shù)牟呗钥梢宰岄喿x工作變的輕松很多。
1. 對于常用的系統(tǒng)函數(shù)進(jìn)行追蹤。
比如ReadFile,CreateDevice,CreateWindow,在這些函數(shù)處放幾斷點,
可以看到代碼的調(diào)用過程。通過這種方式可以方便地把代碼分為底層代碼
和上層邏輯代碼。
2.依據(jù)項目依賴關(guān)系進(jìn)行閱讀。
項目的依賴關(guān)系同時表明了項目的復(fù)雜程度。對于大型的項目通常都會
分割成若干子項目,根據(jù)項目的依賴關(guān)系,循序漸進(jìn)的方式可以讓閱讀變的
簡單。
3.對于以lib形式提供的子項目。
在閱讀時,可以先把lib的整個項目做為黑盒使用。根據(jù)_declspec(dllexport)或者
以頭文件方式提供的調(diào)用接口,可以減少對于細(xì)節(jié)的閱讀時間。根據(jù)模塊進(jìn)行大致的劃分,
可以有效地對項目的結(jié)構(gòu)有直接的感性認(rèn)識。
4.識別項目中使用的設(shè)計模式。
對于大型項目來說,設(shè)計模式是必不可少的。在龐大的代碼中識別設(shè)計模式,尋找代碼
中使用相似手法的代碼結(jié)構(gòu)可以極大簡化需要閱讀的代碼。
5.根據(jù)數(shù)據(jù)流程分析。
根據(jù)項目中,輸入數(shù)據(jù)如何在代碼中執(zhí)行流動,可以對程序進(jìn)行動態(tài)分析,了解各個模塊的
動態(tài)職責(zé)劃分。
6.修改部分代碼,進(jìn)行調(diào)試。
修改部分常數(shù)或者饒過某些程序執(zhí)行流程,或者以簡化的數(shù)據(jù)對程序進(jìn)行追蹤。