如何阅读公司的项目代码

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

如何阅读公司的项目代码

时间: 2024-08-13 19:41:07

如何阅读公司的项目代码的相关文章

怎样阅读公司的项目代码

看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历. 声明:我从事的是C++开发工作.阅读的代码都是基于client/server的,下面谈的是C++项目代码的阅读方法多些 希望懂java的小伙伴分享下java公司项目代码的阅读方法.小弟感激不尽. 编译代码把项目跑起来  代码到手以后.先尝试着编译一下,无非就是库的配置.库路径的配置,缺少某个文件,或者头文件包括路径不对,一般公司给你的代码都能够编译成功,windows平台下一般使用vs工具来编

教你阅读Python开源项目代码

为什么要阅读开源代码 阅读 Python 开源项目代码主要有如下三个原因: 在工作过程中遇到一些问题 Google 和 StackOverFlow 等网站找不到解决办法,只能去翻源码. 对某些项目或者方向非常感兴趣,希望深入. 学习遇到瓶颈需要汲取开源项目的经验和用法来做提高.注意:很多人学Python过程中会遇到各种烦恼问题没有人帮答疑.为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿

C#项目代码规范

.Net 项目代码风格要求 PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# 代码风格要求 1.1注释 类型.属性.事件.方法.方法参数,根据需要添加注释. 如果类型.属性.事件.方法.方法参数的名称已经是自解释了,不需要加注释:否则需要添加注释. 当添加注释时,添加方式如下图所示: 1.2 类型(类.结构.委托.接口).字段.属性.方法.事件的命名 优先考虑英文,如果英文没有合适的单

.NET之美——.Net 项目代码风格要求

.Net 项目代码风格要求 PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# 代码风格要求 1.1注释 类型.属性.事件.方法.方法参数,根据需要添加注释. 如果类型.属性.事件.方法.方法参数的名称已经是自解释了,不需要加注释:否则需要添加注释. 当添加注释时,添加方式如下图所示: 1.2 类型(类.结构.委托.接口).字段.属性.方法.事件的命名 优先考虑英文,如果英文没有合适的单

如何阅读他人的程序代码

近日,在互联网上游荡,偶然发现一篇曾经的文章,是关于如何阅读他人程序代码的,阅后颇为受益,于是乎重新整理了一下格式,将此文转载如下: 如何阅读他人的程序代码 文/王建兴   作者简介: 王建兴,清华大学资讯工程系的博士研究生,研究兴趣包括计算机网络.点对点网络.分布式网络管理.以及行动式代理人,专长则是Internet应用系统的开发.曾参与过的开发项目性质十分广泛而且不同,从ERP.PC Game到P2P网络电话都在他的涉猎范围之内. 一.读懂程序代码,使心法皆为我所用 程序代码是别人写的,只有

.Net 项目代码风格要求

.Net 项目代码风格要求 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# 代码风格要求 1.1注释 类型.属性.事件.方法.方法参数,根据需要添加注释. 如果类型.属性.事件.方法.方法参数的名称已经是自解释了,不需要加注释:否则需要添加注释. 当添加注释时,添加方式如下图所示: 1.2 类型(类.结构.委托.接口).字段.属性.方法.事件的命名 优先考虑英文,如果英文没有合适的单词描述,可以使用拼音,使用中文是不符合要求的.

项目代码管理工具Git的总结

在项目的开发中,代码的同步管理很重要,团队的几个人可以通过免费的github管理自己的开源项目代码,高效方便.下面说说,开发中经常用到的git指令操作,基于github平台. 0.配置提交者的账户和邮箱名 git config --global user.name "Your Real Name" //账户 git config --global user.email [email protected] //邮箱 1本地创建仓库,然后同步到远程github中. $git init //

iOS 统计项目代码行数

最近去面试 对面的"他" 问我其中一个问题 是 "你的项目代码量是多少?" 当时的确有点蒙圈, 我可以从整个项目打包的角度考虑项目大小,我还真没想过到底我的项目代码量,于是我大概表达了一下 "我的确没从代码量考虑过项目,请教一下你们如何去统计的 如果统计项目代码量,用来干什么呢 " 然后对方回答的话我比较意外"用看的...就是看..." 大概是几个字略过去了 没有对我的疑问有任何价值性质的回应. 基于钻研精神,我后来还是问了我

公司某项目前端技术积累

最佳实践 BootStrap + jquery + jquery插件 + sea.js/require.js + Grunt 前期技术选型 BootStrap + Backbone.js + require.js + jquery插件 ExtJS Angular.js BootStrap + jquery + jquery插件 前端技术选型总结: 之所以选择 BootStrap + jquery + jquery插件 的原因是因为ExtJS或Angular.js这种大而全的MVC框架,学习成本较