当前位置:C++技术网 > 资讯 > 如何阅读项目代码和分析已有的项目代码

如何阅读项目代码和分析已有的项目代码

更新时间:2015-06-23 16:04:14浏览次数:1+次

    对于阅读和使用他人代码的问题,做个软件的基本都会遇见。当一个功能实现没有思路的时候或者具体的实现不会的时候,求助于网上现成的代码,是很自然的事情。但是也带来了不少问题。同一个功能,基本会搜到很多的代码实现,这是好事。就怕那种搜来搜去就一个版本的代码,而这个代码又不符合要求,这是最头痛的。但是代码多了,有的朋友又不知道用哪个好。
    其实我想说的是,只要代码能够实现需要的功能,都是不错的,也没有主流方法标准方法的说法,也千万不要有这种想法。因为在我之前开发功能时,第一反应是在想,我的方法是不是标准的方法,随后立马就否定了这个想法。有时候在网上都搜不到相关的资料,更别谈标准方法了,能解决问题就不错了。能解决问题的就是好方法,又何须纠结方法的好坏呢。不过,如果自己的方法实现了,之后可以在这个基础上优化,而不是一步到位,那是不可能的。因为经验不够,总会有欠缺考虑,不管怎么样,先让功能实现,然后再优化。
    而对于拿到的一段代码,要使它正常运行,有时候也不是那么容易的事情。因为人家给的代码,在人家的IDE能够通过,不代表在自己的IDE能通过,可能是因为工程设置或者导入库等没有说明,或者复制代码时漏掉了头文件包含,从而引发各种问题。拿到一段代码,先不是记着去看具体的细节,而是让其运行起来。在正常运行起来前,肯定会有很多错误。这个时候就需要能够根据错误找到原因的能力。比如提示一个找不到标识符,要能够很快的确定如何去定位问题。这些就需要平常多找多练才能够掌握。如果程序能够编译通过,然后要看运行结果是不是符合自己的要求,如果完全不是那回事,就不要浪费时间。当然这是本着解决问题的方式来思考的。如果沾边或者就是你要的功能,但是因为是混合的,不是单一的代码,那么你就需要将你需要的功能提取出来,简化,然后自己组合应用于自己的代码中,千万不要直接嵌入自己的代码,想完全符合自己的要求,这种几率太小。只要一段代码有你需要的功能,就没必要再去搜集代码了,把这段代码好好理解掌握应用即可。没有标准的方法,掌握了一个就行了。如果这个在性能上满足不了,那可以根据已经实现的来优化,或者再找代码。不过建议自己来优化,不要对网上找代码形成依赖。对于代码中的类函数消息什么的,标准的自然大家是熟悉的,对于不熟悉的,那就可以跟踪代码来找,这时候用MSDN或者搜索引擎都不是好的办法。直接在函数名消息名宏单词上右击,然后转到定义(goto definition),如果没有转的,自然就是用户的,系统的是可以转到的,如果转到了,还要看看定位的文件的名字,如果是用户的文件那就是工程的,如果是系统的,自然也就是系统定义的。通过这个方法可以很快就弄明白了这些关系。同时,这个方法在阅读大型项目代码时是非常有用的,一定要掌握。
    然后就是要熟练掌握断点调试技术,要熟悉断点下但不执行跟踪和分析各个变量的变化。这时候,你需要有一个大致的认识,知道程序的大致流程,不然即使看着变量变化也不知道在干什么。这个大致流程通过函数名和程序结构大致推断出来,然后单步跟踪变量变化来验证,这样一步步才会跟踪清楚。对于系统函数,如果自己不清楚,那就要查阅MSDN,不要盲目相信备注,况且有时候没有备注,而不要自己根据函数名来猜测函数的功能,否则可能走入死胡同。
    开始调试不出来不要急躁,多调试几遍是有必要的,我们就是要通过搜集大量的错误症状来诊断程序的逻辑错误。
    把别人的代码弄来后,就这样慢慢跟踪研究,掌握核心的代码,然后抽丝剥茧,提取核心,然后根据自己的需求,来实现自己的功能。如果这些核心代码经常用到,也建议写成使用心得或者笔记之类的,记录到一个地方,最好是公益学习的网站,比如我们的网站。一方面可以供以后自己查阅,防止时间长了忘了,也没必要去记,用多了就会了。另一方面,既然自己受益于网络,那么也要学会感恩回馈,会感恩才是真正会学习的程序员,程序员的学习多数受益于网络,我们要懂得回报。