文档章节

如何熟悉一个开源项目?

浮躁的码农
 浮躁的码农
发布于 2015/07/28 13:46
字数 1087
阅读 27
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>



你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:

1、首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。

2、阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。

3、如果该项目有提供现成的example工程,首先尝试按照开始文档的介绍运行example,如果运行顺利,那么恭喜你顺利开了个好头;如果遇到问题,首先尝试在项目的FAQ等文档里查找答案,再次,可以将问题(例如异常信息)当成关键词去搜索,查找相关的解决办法,你遇到了,别人一般也会遇到,热心的朋友会记录下解决的过程;最后,可以将问题提交到项目的邮件列表,请大家帮你看看。在没有成功运行example之前,不要尝试修改example。

4、运行了第一个example之后,尝试根据你的理解和需要修改example,测试高级功能等。

5、在了解基本使用后,需要开始深入的了解该项目。例如项目的配置管理、高级功能以及最佳实践。通常一个运作良好的项目会提供一份从浅到深的用户指南,你并不需要从头到尾阅读这份指南,根据时间和兴趣,特别是你自己任务的需要,重点阅读部分章节并做笔记(推荐evernote)。

6、如果时间允许,尝试从源码构建该项目。通常开源项目都会提供一份构建指南,指导你如何搭建一个用于开发、调试和构建的环境。尝试构建一个版本。

7、如果时间允许并且有兴趣,可以尝试阅读源码:

(1)阅读源码之前,查看该项目是否提供架构和设计文档,阅读这些文档可以了解该项目的大体设计和结构,读源码的时候不会无从下手。

(2)阅读源码之前,一定要能构建并运行该项目,有个直观感受。

(3)阅读源码的第一步是抓主干,尝试理清一次正常运行的代码调用路径,这可以通过debug来观察运行时的变量和行为。修改源码加入日志和打印可以帮助你更好的理解源码。

(4)适当画图来帮助你理解源码,在理清主干后,可以将整个流程画成一张流程图或者标准的UML图,帮助记忆和下一步的阅读。

(5)挑选感兴趣的“枝干”代码来阅读,比如你对网络通讯感兴趣,就阅读网络层的代码,深入到实现细节,如它用了什么库,采用了什么设计模式,为什么这样做等。如果可以,debug细节代码。

(6)阅读源码的时候,重视单元测试,尝试去运行单元测试,基本上一个好的单元测试会将该代码的功能和边界描述清楚。

(7)在熟悉源码后,发现有可以改进的地方,有精力、有意愿可以向该项目的开发者提出改进的意见或者issue,甚至帮他修复和实现,参与该项目的发展。

8、通常在阅读文档和源码之后,你能对该项目有比较深入的了解了,但是该项目所在领域,你可能还想搜索相关的项目和资料,看看有没有其他的更好的项目或者解决方案。在广度和深度之间权衡。

以上是我个人的一些习惯,我自己也并没有完全按照这个来,但是按照这个顺序,基本上能让你比较高效地学习和使用某个开源项目。

本文转载自:

浮躁的码农

浮躁的码农

粉丝 77
博文 935
码字总数 195413
作品 0
松江
程序员
私信 提问
加载中

评论(1)

OSC_zEcJsD
OSC_zEcJsD
好习惯
Linux 基金会发布企业开源指南中文版

Linux 基金会发布了10本企业开源指南的中文版,旨在帮助高管,开源项目经理,开发人员,律师和决策者学习和了解开源, 介绍企业组织如何受益,以及如何正确实施。开源指南遵守共享授权CC4.0版...

marsdream
2018/06/27
0
0
Linux基金会发布中文版企业开源指南

导读 Linux 基金会是一个通过开源实现大规模创新的非盈利性组织,已经发布了10本企业开源指南的中文翻译,旨在帮助高管,开源项目经理,开发人员,律师和决策者学习如何最佳利用开源。 CNCF...

问题终结者
2018/07/05
48
0
接好了!Linux基金会送了你三本开源指南

  【IT168 资讯】Linux基金会为企业开发和使用开源软件提供了三个新指南。   Linux基金会作为一个非盈利组织,在支持开源社区这条路上已经走了17年了。Linux基金会在9月份发布了6个针对企...

it168网站
2017/11/07
0
0
2016年最值得学习的五大开源项目

2016年最值得学习的五大开源项目 xinghongfei 发表于 2016-08-30 19:56 第 1200 次阅读 android,开源,源码 1 1,Material Animations 演示View的平移、缩放动画,activity进入和退出动画,界...

程序袁_绪龙
2016/09/06
164
0
Linux 程序员的自我修养:玩转 GDB 调试

我从学生时代到进入软件开发这个行业,不知不觉已经十余年了。这些年,先后在网游公司做过游戏服务器,为上海某交易所做过金融交易系统、在金融证券公司做过股票证券交易系统和即时通讯软件、...

GitChat的博客
2018/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

超过了最大请求长度。

尝试在网站上上传视频时,出现错误“ 最大请求长度超出” 。 我该如何解决? #1楼 我认为这里没有提到它,但是要使其正常工作,我必须在web.config中提供以下两个值: 在system.web <httpRun...

javail
9分钟前
3
0
宝塔好用吗?

不少新手站长对服务器运维知识不擅长,不知道怎样管理好云服务器。如果有一个简单易用的面板,站长们就不需要去学习运维技巧,把这些就交给后端工程师就好。 宝塔算是目前市面上使用用户较多...

BirdCloud
15分钟前
3
0
第二代网关GateWay搭建流程

Spring Cloud第二代网关GateWay是由纯Netty开发,底层为Reactor,WebFlux构建,不依赖任何Servlet容器,它不同于Zuul,使用的是异步IO,性能较Zuul提升1.6倍。搭建过程如下(本次搭建的为子项目...

算法之名
17分钟前
10
0
Drools规则引擎详解-常用的drl实例

package droolsDemo//说明:每个 drl 都必须声明一个包名,这个包名与 Java 里面的不同,它不需要与文件夹的层次结构一致,//主要用于可以根据kmodule.xml中不同的package属性来指定加载...

蜗牛伊
20分钟前
4
0
如何在Android Studio中“选择Android SDK”?

将Eclipse-Android-Project成功导入“ Android Studio 1.4”后,出现错误 “请选择Android SDK” 当我单击该按钮以在模拟器中运行该应用程序时,但找不到任何方法。 当我单击“运行”时,此对...

技术盛宴
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部