怎样阅读公司的项目代码

看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历。

声明:我从事的是C++开发工作。阅读的代码都是基于client/server的,下面谈的是C++项目代码的阅读方法多些

希望懂java的小伙伴分享下java公司项目代码的阅读方法。小弟感激不尽。

编译代码把项目跑起来  代码到手以后。先尝试着编译一下,无非就是库的配置。库路径的配置,缺少某个文件,或者头文件包括路径不对,一般公司给你的代码都能够编译成功,windows平台下一般使用vs工具来编译。集成调试工具。而Linux下编译.使用gcc(g++)编译器 make工具或者automake工具,详细使用方法在搜索引擎上能找到。编译成功以后把项目跑起来。我喜欢看看client长啥样,哈哈,恭喜你,迈出了第一步

看项目文档,和项目开发者(维护人员)进行沟通    公司的项目代码会有相关的设计文档,比方XX项目概要设计文档、XX项目具体设计文档、XX项目模块设计以及之间依赖关系的文档等等,通过这些文档,软件开发者起码对项目有个总体的认识,比方项目本身是解决什么领域问题的?有哪些功能模块以及他们的大体功能是什么?使用了什么开源库?通过文档还能够了解到代码中的一些数据结构的具体凝视,网络传输是怎样设计的,使用了哪些协议?数据库中的字段是怎样设计的。以及数据库中各个表之间的关系。在看代码的过程中,遇到模糊不清或者自己拿不住的代码,要及时和同事沟通,他们对代码的熟悉程度比我们强。虚心有礼貌的问人家。否则自己在那憋着瞎猜代码的含义,费时费力还得不偿失,开口求人帮忙就那么难?嘻嘻,你帮我下,我帮你下。咱俩慢慢就熟悉了嘛

 搞清楚程序的流程和大体框架。详细功能模块详细分析    从main函数開始,把client和server怎么工作的流程大致的看一下,client怎样连接server段的?serverclient是怎样进行数据交互的?在关键的地方下断点。看看client发送来的内容是什么。server在接收到client发送来的消息后是怎样处理的。

个人建议。先把程序的流程和总体框架搞懂一点。明确一些函数大概是实现什么功能就能够,如今不要去过多的关注和沉迷在功能模块的实现细节中,当须要定位到详细的某个功能实现模块的时候,再切换到函数实现中一点点分析代码就ok。假设对某个地方不太清楚,能够自己改动下源码,执行一下看看执行的结果如何。

我刚開始的时候不敢改源码,怕改错了项目就不好使了。领导会骂我,先拷贝一份编译好的源码,然后任意改。反正我另一份备份的源码,我不怕。

个人兴趣驱动或者debug驱动方式来看代码    说实话,单纯的看代码真心没劲枯燥,并且效率不高。

我们能够自我驱动看代码,比方思考某个功能是怎样实现的呢?然后推測可能是怎样实现的。然后再项目代码中一点点去跟踪源码,慢慢的剥茧抽丝,相信你会有恍然大悟的感觉。

另一种就是公司会用改bug的方式来驱动你熟悉代码,我刚进公司的时候就是这样,解决一个bug后。不只对于项目总体流程熟悉了,也对当中的几个模块熟悉了。一举两得。

UML帮助我们整理思路    使用UML帮助我们整理思维,使用类图来分析类与类之间的关系,使用UML里的活动图。配合IDE工具分析核心业务流程,理解软件是怎样工作的。使用UML来整理程序流程这招。还是在我进入公司以后。带我的老师教我的,个人感觉很受益。程序开发者在初期的时候可能对于画UML图有点不适应。慢慢就习惯了。对于整理思路挺有帮助的。希望大家养成个好习惯,嘻嘻。

详细的模块分析    对须要的详细的代码进行详细分析。搞清变量的意义和关联关系,搞清实现的逻辑和算法。好的代码。此处是会有凝视的。

能够自己F11走到项目代码中。然后单步调试。看看每一个变量是怎样变化的。会加深对这个函数中的逻辑和算法的理解。

心理状态的调整    项目源码的代码量多没啥。可是我们自己心里不要着急,慢慢来。自己努力的功夫到了,多花点时间在看代码思考代码上,公司的代码会被你一点点啃透的。

假设遇到看不懂代码的情况,就分析下自己为什么看不懂?是项目使用了自己不熟悉的设计模式?还是一些业务领域基础知识自己没有掌握(比方我自己做视频server开发,就须要看非常多资料去了解视频格式,视频压缩,视频编码以及视频传输的一些协议)?或者是自己对项目框架的理解不正确导致的,要自动的分析

ps:有一本《代码阅读方法和实践》(code reading),会教你如何去阅读源码。

时间: 2024-10-11 12:56:04

怎样阅读公司的项目代码的相关文章

如何阅读公司的项目代码

看到ITFriend中有些小伙伴刚进入公司,面对大量的项目代码,往往手足无措,有点慌,我说下我的经历. 声明:我从事的是C++开发工作,阅读的代码都是基于客户端/服务器的,以下谈的是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框架,学习成本较