如何阅读公司的项目代码
看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历。
声明:我从事的是C++开发工作,阅读的代码都是基于客户端/服务器的,以下谈的是C++项目代码的阅读方法多些
希望懂java的小伙伴分享下java公司项目代码的阅读方法,小弟感激不尽。
编译代码把项目跑起来 代码到手以后,先尝试着编译一下,无非就是库的配置,库路径的配置,缺少某个文件,或者头文件包含路径不正确,一般公司给你的代码都可以编译成功,windows平台下一般使用vs工具来编译,集成调试工具,而Linux下编译.使用gcc(g++)编译器 make工具或者automake工具,具体用法在搜索引擎上能找到。编译成功以后把项目跑起来,我喜欢看看客户端长啥样,哈哈,恭喜你,迈出了第一步
看项目文档,和项目开发人员(维护人员)进行沟通 公司的项目代码会有相关的设计文档,比如XX项目概要设计文档、XX项目详细设计文档、XX项目模块设计以及之间依赖关系的文档等等,通过这些文档,软件开发人员起码对项目有个整体的认识,比如项目本身是解决什么领域问题的?有哪些功能模块以及他们的大体功能是什么?使用了什么开源库?通过文档还可以了解到代码中的一些数据结构的详细注释,网络传输是如何设计的,使用了哪些协议?数据库中的字段是如何设计的,以及数据库中各个表之间的关系。在看代码的过程中,遇到模糊不清或者自己拿不住的代码,要及时和同事沟通,他们对代码的熟悉程度比我们强,虚心有礼貌的问人家。否则自己在那憋着瞎猜代码的含义,费时费力还得不偿失,开口求人帮忙就那么难?嘻嘻,你帮我下,我帮你下,咱俩慢慢就熟悉了嘛
搞清楚程序的流程和大体框架,具体功能模块具体分析 从main函数开始,把客户端和服务器怎么工作的流程大致的看一下,客户端如何连接服务器段的?服务器客户端是如何进行数据交互的?在关键的地方下断点,看看客户端发送来的内容是什么,服务器在接收到客户端发送来的消息后是如何处理的。
个人建议,先把程序的流程和整体框架搞懂一点,明白一些函数大概是实现什么功能就可以,现在不要去过多的关注和沉迷在功能模块的实现细节中,当需要定位到具体的某个功能实现模块的时候,再切换到函数实现中一点点分析代码就ok。如果对某个地方不太清楚,可以自己修改下源代码,运行一下看看运行的结果怎样。我刚开始的时候不敢改源代码,怕改错了项目就不好使了,领导会骂我,先拷贝一份编译好的源代码,然后随意改,反正我还有一份备份的源代码,我不怕。
个人兴趣驱动或者debug驱动方式来看代码 说实话,单纯的看代码真心没劲枯燥,而且效率不高。我们可以自我驱动看代码,比如思考某个功能是如何实现的呢?然后猜测可能是如何实现的,然后再项目代码中一点点去跟踪源代码,慢慢的剥茧抽丝,相信你会有恍然大悟的感觉。还有一种就是公司会用改bug的方式来驱动你熟悉代码,我刚进公司的时候就是这样,解决一个bug后,不仅仅对于项目整体流程熟悉了,也对其中的几个模块熟悉了,一举两得。
UML帮助我们整理思路 使用UML帮助我们整理思维,使用类图来分析类与类之间的关系,使用UML里的活动图,配合IDE工具分析核心业务流程,理解软件是如何工作的。使用UML来整理程序流程这招,还是在我进入公司以后,带我的老师教我的,个人感觉非常受益,程序开发人员在初期的时候可能对于画UML图有点不适应,慢慢就习惯了。对于整理思路挺有帮助的,希望大家养成个好习惯,嘻嘻。
具体的模块分析 对需要的具体的代码进行详细分析。搞清变量的意义和关联关系,搞清实现的逻辑和算法。好的代码,此处是会有注释的。可以自己F11走到项目代码中,然后单步调试,看看每个变量是如何变化的,会加深对这个函数中的逻辑和算法的理解。
心理状态的调整 项目源代码的代码量多没啥,但是我们自己心里不要着急,慢慢来,自己努力的功夫到了,多花点时间在看代码思考代码上,公司的代码会被你一点点啃透的。如果遇到看不懂代码的情况,就分析下自己为什么看不懂?是项目使用了自己不熟悉的设计模式?还是一些业务领域基础知识自己没有掌握(比如我自己做视频服务器开发,就需要看很多资料去了解视频格式,视频压缩,视频编码以及视频传输的一些协议)?或者是自己对项目框架的理解不对导致的,要自己主动的分析
ps:有一本《代码阅读方法和实践》(code reading),会教你怎样去阅读源代码。
相关 [阅读 公司 项目] 推荐:
谷歌阅读器杀手创业项目Subpug,比Google Reader都好用的RSS阅读器
- - TechFrom科技源创业公司悲剧的诞生:将项目外包
- hr6r - Tech2IPO[原]公司级项目管理例会的汇报内容
- - 麦哲思科技2011年内容阅读趋势的3个创业项目和产品
- - 互联网的那点事...最值得阅读学习的 10 个 C 语言开源项目代码
- - ITeye资讯频道硅谷只有两种科技公司:做阅读器的和不做阅读器的
- - PingWest【其它开源项目→文档在线阅读 DocViwer】DocViewer 是类似百度文库、
- Nick Zhang - Java开源大全一个文档在线阅读的JAVA企业级解决方案.
该项目已经有成功实施经验,中国平安 国信 等公司的内部投研系统已经使用多时.
企业级应用,支持静态密钥加密 动态密钥加密 分页延迟加载 即使转换列队与后台转换列队无缝切入等.