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

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

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

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

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

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

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

7.如果时间允许并且有兴趣,可以尝试阅读源码:
(1)阅读源码之前,查看该项目是否提供架构和设计文档,阅读这些文档可以了解该项目的大体设计和结 构,读源码的时候不会无从下手。
(2)阅读源码之前,一定要能构建并运行该项目,有个直观感受。
(3)阅读源码的第一步是抓主干,尝试理清一次正常运行的代码调用路径,这可以通过debug来观察运行时 的变量和行为。修改源码加入日志和打印可以帮助你更好的理解源码。
(4)适当画图来帮助你理解源码,在理清主干后,可以将整个流程画成一张流程图或者标准的UML图,帮助 记忆和下一步的阅读。
(5)挑选感兴趣的“枝干”代码来阅读,比如你对网络通讯感兴趣,就阅读网络层的代码,深入到实现细 节,如它用了什么库,采用了什么设计模式,为什么这样做等。如果可以,debug细节代码。
(6)阅读源码的时候,重视单元测试,尝试去运行单元测试,基本上一个好的单元测试会将该代码的功能 和边界描述清楚。
(7)在熟悉源码后,发现有可以改进的地方,有精力、有意愿可以向该项目的开发者提出改进的意见或者 issue,甚至帮他修复和实现,参与该项目的发展。

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

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

转载地址:https://www.zhihu.com/question/19637879/answer/51507188

如何快速学习一个开源框架相关推荐

  1. Spring是一个开源框架

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development a ...

  2. 为什么 Web 开发人员需要学习一个 JavaScript 框架?

    原文链接 可能当我们结束本文时,一个新的 Javascript 框架已经在某处启动了.但这确实不在我们的控制范围内.因此,我们应该简单地继续我们所拥有的.至少,由于免责声明,我们可以确定我们不是在发明 ...

  3. 再见Spring!下一个开源框架更香!

    在MyBatis 3.5.1这个版中有968个类.2770个字段.8422个方法.42504行代码.186428个指令码.其源码体量只有Spring 的1/5,也是Hibernate的1/5. 但在功 ...

  4. spring (由Rod Johnson创建的一个开源框架)

    你可能正在想"Spring不过是另外一个的framework".当已经有许多开放源代码(和专有)J2EEframework时,我们为什么还需要Spring Framework? S ...

  5. 如何学习一个开源项目

    如何学习开源项目 google大法好 如果google大法有现成的实践,集成的技术帖子,跟着技术帖子学无疑是最好的.(注意点:要和技术贴处于同环境去学(依赖同版本,环境同环境).it行业很有意思,凡是 ...

  6. springboot入门(一)--快速搭建一个springboot框架

    原文出处 前言 在开始之前先简单介绍一下springboot,springboot作为一个微框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框 ...

  7. 快速搞定开源框架Flowable

    对接Flowable开源框架感想: 出于项目得要求,开始对接Flowable工作流,本来以为有第三方得对接经验,跟着他们提供得文档可以快搞定,没想到过程确实一波三折.别人把开源框架改了一些Log就当作 ...

  8. 如何学习一个开源项目源码

    你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西.怎么下手呢?如何开始呢?我的习惯是这样: 首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博 ...

  9. 这是我见过最好的Unity3D渠道SDK快速适配和快速打包的开源框架Usdk(支持Android/iOS)

    [b]Usdk[/b] 这是一个移动平台sdk快速适配框架和多渠道打包平台,方便android.ios移动平台渠道sdk或者各种Native功能插件的快速接入,接入过程无需修改添加任何的C#代码.内置 ...

最新文章

  1. Apache ZooKeeper - FourLetterCommands运维命令
  2. 计算机里libcurl.dll,Update.exe系统错误 由于找不到libcurl.dll,无法继续执行代码。重新安装程序可能会解决此问题。 - Microsoft Community...
  3. u-boot中添加自定义命令
  4. c++协程4 (boost::coroutine)
  5. python储存_python数据储存
  6. MediaPlayer 播放视频的方法
  7. DllRegisterServer的调用失败的问题解决方法
  8. 大数据分析的意义在哪
  9. python 拟合分布_如何使用python将weibull分布拟合到数据?
  10. 关于wow游戏插件制作之前的几件事
  11. 计算机毕业设计——简单的网页设计
  12. CSS数学函数- 阶梯值函数round() mode() rem()
  13. 最详BF算法和KMP算法
  14. 浅谈sketch插件开发(三)
  15. 利用 edge的朗读功能,写一个python文本转语音的代码
  16. 游戏建模:手绘暗黑小萝莉
  17. 硕士研究生期间,必须了解的一些科研工具
  18. GD32汽车诊断协议 ISO-9141测试
  19. oracle计算timestamp差,Oracle 计算timestamp和date类型的时间差
  20. Using the Iframe to implement the Ajax

热门文章

  1. 股权分配有什么风险?
  2. 华三HCL免费下载体验
  3. 软件版本中的Alpha,Beta,RC,Trial是什么意思
  4. docker数据卷容器卷_如何删除Docker映像,容器和卷
  5. 打印机不打印计算机原因,打印机正常但无法打印原因以及如何解决
  6. 服务器更新操作系统补丁,windows 10通过第三方landesk补丁服务器对系统进行了更新操作...
  7. Linux 压缩解压和软件安装
  8. css hack *html,css hack 大全 各个浏览器的css
  9. oracle快照方案,【DBA及开发必备】全解ORA-1555快照太旧错误原理及解决方案
  10. c语言signal函数详细说明