新手必看:如何快速看懂VC++項目
1、在具備必需的編程基礎知識后,試圖理解一份完整的代碼可以從以下幾個方面入手:
1)首先運行以下程序,從外部角度感受一下有哪些功能。
2)了解代碼中每個類的功能。看看文檔,或者類的注釋,那么僅僅是類名也能對類有個大致的印象
3)整理各個類之間的引用、包含等關系,從功能和實現角度,理出類的層次關系
4)在得出類的層次關系的基礎,把重點放在各個層次的核心類中,往往核心類包含的功能較為多而復雜,爭取明白它包含那幾組接口,實現了那些功能。同時,這里重要的一點是,對于一些工具類,算法類,或者實現某些特殊系統功能的類,不管它多么復雜,代碼多么長,只要不是類層次關系上的幾個核心類,先全扔到一邊去。
5)運行,調試,設置斷點。不斷驗證修正你先前整理的類層次關系。
6)至此,你應該對功能有一個整體印象,也能找到實現對應功能的代碼。回頭翻一下你的任務安排,定位到對應的代碼上,開始啃吧,到這里已經沒有多少花招可言了。
2、沒有注釋,程序就像天書一樣,需要花大量的時間去理解。
3、看原碼就像抓葡萄一樣,得找把。抓住把就好說了。MFC程序以下幾個函數很重要: CWinApp::InitInstance()、CWinApp::ExitInitInstance()、CView::OnCreate()、 CView::OnInitUpdate()、CMainFrame::OnCreate()、CMainFrame::CreateClient()。 這些函數一般都含有創建和初始化的重要信息。順著他們看就能逐漸理清程序的脈絡。 由資源編輯器看代碼也是不錯的選擇。比如想看某個按鈕的代碼,雙擊就是了。 還有,如果程序員代碼寫得很標準的話,那么各個構造函數,往往是成員變量賦初值的地方。 不過要看SDK的代碼就不是這樣了,他們可沒那么直觀。 SDK的關鍵函數:WinMain()、InitInstance()、WndProc()。 得順著WndProc()的switch(message)才能看清各個函數功能是怎樣的。 看代碼還有重要的一點,就是看作者留下的注釋。這對任何程序都很重要哦!
4、首先要理解他的業務流程吧,看看VC++項目的源程序的設計書,程序的流程圖。
5、主要是看別人寫的開發文檔了,然后你要對程序里面的類有個大致的了解,尤其是類與類之間的調用關系,然后再細化,看具體的成員函數的實現等,呵呵~~ ,用UML來查看類圖之間的關系,這樣會方便很多~~~
6、不支持拿到手就直接DEBUG,應該從大的地方抓起,逐步細化,下面是一些建議: 了解項目的背景;了解項目的功能以及架構;可以執行的應該多執行幾遍;觀察它的流程;認真閱讀各個頭文件,從各個類及其接口函數猜測它的作用、結構、使用方法;把這些都理清后再細看代碼,加上適當的DEBUG應該就可以駕御這個項目了。
7、多設置點斷點,看看函數之間的調用關系吧。也就是流程,把流程搞清楚了 ,思路也就清楚了。
8、先了解功能,然后跟者消息走,比如一按紐的響應函數就跟蹤過去,在看他調用什么,這樣一步步來就可以 .還有查找很重要,比如某個函數被哪些模塊調用了,查下最好。
9、在某個函數中設置好斷點,F5,停下來后打開工具欄的Browse小條,借助其可以觀察到當前函數堆棧、當前函數調用了那些函數、被那些函數調用。
10、如果沒有文檔,沒有注釋,但應該是有功能的,你先從主程序入口,一點點看。推薦工具Source Insight,可以幫助你在函數之間跳轉。剛開始的確很難。日子長了就好了。我就專門看沒有什么文檔和注釋的代碼,抓bug,還要修改,看了一個月后就容易多了。 總之很多程序員的素養不夠,只管寫代碼,沒有軟件工程意識,不寫文檔,不寫注釋,給軟件維護和修改帶來很大的困難。這樣的軟件開發不知道怎么可能成熟起來。
11、用RationalRose對工程文件作逆向工程,可以得到繼承的層次和類的具體說明,而后根據層次和類的結構一步一步翻看
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成