新手必看:如何快速看懂VC++项目

简介: 1、在具备必需的编程基础知识后,试图理解一份完整的代码可以从以下几个方面入手:   1)首先运行以下程序,从外部角度感受一下有哪些功能。  2)了解代码中每个类的功能。看看文档,或者类的注释,那么仅仅是类名也能对类有个大致的印象   3)整理各个类之间的引用、包含等关系,从功能和实现角度,理出类的层次关系   4)在得出类的层次关系的基础,把重点放在各个层次的核心类中,往往核心类包含的功能较为多而复杂,争取明白它包含那几组接口,实现了那些功能。

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对工程文件作逆向工程,可以得到继承的层次和类的具体说明,而后根据层次和类的结构一步一步翻看

目录
相关文章
|
1月前
|
开发工具 C语言 C++
CMake构建大型C/C++项目:跨平台设计与高级应用(二)
CMake构建大型C/C++项目:跨平台设计与高级应用
42 0
|
1月前
|
设计模式 测试技术 编译器
C++项目中打破循环依赖的锁链:实用方法大全(一)
C++项目中打破循环依赖的锁链:实用方法大全
78 0
|
3月前
|
存储 机器学习/深度学习 算法
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5
69 0
|
13天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
37 6
|
22天前
C/C++test两步完成CMake项目静态分析
通过将C/C++test集成到CMake项目中,并根据项目的需要进行配置,可以在两步内完成CMake项目的静态分析。这样可以帮助开发人员及时发现并修复潜在的代码问题,提高代码质量和可靠性。
8 0
|
28天前
|
IDE 算法 编译器
快速掌握陌生C++项目的科学与心理学策略
快速掌握陌生C++项目的科学与心理学策略
57 0
|
29天前
|
敏捷开发 安全 API
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
C/C++ 工程师面试:如何精彩展示你的项目经验并获得高分
73 0
|
1月前
|
消息中间件 存储 算法
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
【C/C++ 泡沫精选面试题04】在实际项目中,多进程和多线程如何选择?
43 1
|
1月前
|
编译器 持续交付 项目管理
CMake构建大型C/C++项目:跨平台设计与高级应用(三)
CMake构建大型C/C++项目:跨平台设计与高级应用
39 0
|
1月前
|
编译器 Linux C语言
CMake构建大型C/C++项目:跨平台设计与高级应用(一)
CMake构建大型C/C++项目:跨平台设计与高级应用
66 0

热门文章

最新文章