如何阅读公司的项目代码

标签: 阅读 公司 项目 | 发表时间:2014-07-02 05:07 | 作者:haolipengzhanshen
出处:http://blog.csdn.net

看到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),会教你怎样去阅读源代码。

作者:haolipengzhanshen 发表于2014-7-1 21:07:26 原文链接
阅读:0 评论:0 查看评论

相关 [阅读 公司 项目] 推荐:

如何阅读公司的项目代码

- - CSDN博客综合推荐文章
看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历. 声明:我从事的是C++开发工作,阅读的代码都是基于客户端/服务器的,以下谈的是C++项目代码的阅读方法多些. 希望懂java的小伙伴分享下java公司项目代码的阅读方法,小弟感激不尽. 编译代码把项目跑起来  代码到手以后,先尝试着编译一下,无非就是库的配置,库路径的配置,缺少某个文件,或者头文件包含路径不正确,一般公司给你的代码都可以编译成功,windows平台下一般使用vs工具来编译,集成调试工具,而Linux下编译.使用gcc(g++)编译器 make工具或者automake工具,具体用法在搜索引擎上能找到.

谷歌阅读器杀手创业项目Subpug,比Google Reader都好用的RSS阅读器

- - TechFrom科技源
TechFrom科技源 12.29日,RSS阅读有一个很大的问题在于没有商业模式,但是不妨碍创业项目出现,刚刚诞生的 Subpug 号称要取代谷歌阅读器 Google Reader,在美国圣诞节这天发布. 这个RSS阅读器 Subpug,优秀的地方在于界面更友好,社交功能更好. You can choose from certain pre-subscribed options like Gadgets, Music, Fashion, and even Geek Humor, or you can build your own/import your Google Reader OPML.

创业公司悲剧的诞生:将项目外包

- hr6r - Tech2IPO
我一朋友准备做一个在线订餐服务平台,由于自己不懂技术,只好将平台的技术部分外包出去. 由于自己也不在技术圈内,认识的懂技术的人也少,因此找外包团队也不方便,只好从网上一个一个搜,看到懂点技术的人就把自己想法跟他们说,看看能不能做出来. 好不容易找了个离公司近点的外包公司,一切都谈妥后付了一半左右的定金.

[原]公司级项目管理例会的汇报内容

- - 麦哲思科技
    很多公司有部门级或公司级的项目管理例会,一般会安排各个项目的项目经理给部门经理与公司的高层进行汇报,笔者曾经旁观过多家企业的项目管理例会,总结了如下的项目经理汇报要点:.   (1) 到目前为止项目的工期已经进展到什么程度了. 例如日历工期是100天,当前进展到了第30天,则工期已经过去了30%.

2011年内容阅读趋势的3个创业项目和产品

- - 互联网的那点事...
2011年网络发展趋势之内容阅读新模式崛起中看到阅读类产品和服务的兴起,今天来看3个阅读和内容类的创业公司项目和产品,BetaBait,Subjot,Movable Ink. 来自国外科技媒体Mashable,3个产品都是帮助信息日益饱和的互联网用户订制自己感兴趣的内容. BetaBait:帮助联系创业公司和早期用户的服务.

最值得阅读学习的 10 个 C 语言开源项目代码

- - ITeye资讯频道
Webbench是一个在linux下使用的非常简单的网站压测工具. 它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力. Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接: http://home.tiscali.cz/~cz210552/webbench.html.

硅谷只有两种科技公司:做阅读器的和不做阅读器的

- - PingWest
听上去是句玩笑话,但如果你看看在距离Google Reader退休还剩一周的这段时间发生了些什么,就觉得好像还真的是这么回事. Feedly从三个月前Google Reader宣布关闭的时候开始就不断升级自己只有区区百万用户的阅读器产品, 并迅速积累了1200万用户;从事新闻阅读的Digg在本周推出了 自己的新闻阅读器Digg Reader,而传统老牌内容网站AOL也同时推出了阅读器;接下来就是 有关Facebook的一则无比逼真的传闻:一款酷似Flipboard的阅读工具已经秘密地研发了许久,并即将推出.

【其它开源项目→文档在线阅读 DocViwer】DocViewer 是类似百度文库、

- Nick Zhang - Java开源大全
DocViewer 是类似百度文库、豆顶书屋的在线文档阅读程序. 基于JAVA语言,跨平台的文档在线阅读器.

一个文档在线阅读的JAVA企业级解决方案.

该项目已经有成功实施经验,中国平安 国信 等公司的内部投研系统已经使用多时.

企业级应用,支持静态密钥加密 动态密钥加密 分页延迟加载 即使转换列队与后台转换列队无缝切入等.

教育科技公司 Speakaboos 宣布收购 Homer,“儿童阅读危机”能就此化解吗?

- - 36氪
如果打开美国地区 App Store 的教育栏目,有两款 App 一直在“儿童和图书”板块中位居榜首:Speakaboos 和 Homer,而且它们都在家长、教师群体中广受好评. 都专注少儿阅读,还有共同的股东 Deborah Quazzo,最近这两家公司也共同面临着一项危机:儿童阅读危机. 在接受媒体采访时,Speakaboos 的 CEO Neal Shenoy 介绍了这样一组数据:根据《美国国家教育进展评估》在 2015 年的调查数据,教育级别在“4th Grade”(即美国小学 4 年级)的学生中,只有 36% 的人达到了“精通”级别,而在“8th Grade”(即美国初中 2 年级)的学生中,只有 38% 的人达到“精通”.

自己写的一些工具库,已经用于公司的商业项目。在此分享,不用赞我

- - DiyCode - 致力于构建开发工程师高端交流分享社区社区
公司的项目使用的是Nodejs进行开发,基于两年的开发经验写了一些工具库,现在已经用在了上线项目中. 这些项目还在持续更新中,难免会有些瑕疵,欢迎issue和PR. 这个库是我们项目中的一个核心库,为什么这么说. Mongodb没有很好的实现Transaction,没有数据回滚的话,上线项目的数据会极容易造成污染(比如执行到一半的程序报了个错,前面更新的数据就是脏数据了).