转:http://www.blogjava.net/killme2008/archive/2012/05/22/378885.html
你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西。怎么下手呢?如何开始呢?我的习惯是这样:
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.通常在阅读文档和源码之后,你能对该项目有比较深入的了解了,但是该项目所在领域,你可能还想搜索相关的项目和资料,看看有没有其他的更好的项目或者解决方案。在广度和深度之间权衡。
以上是我个人的一些习惯,我自己也并没有完全按照这个来,但是按照这个顺序,基本上能让你比较高效地学习和使用某个开源项目。
相关推荐
首先,我们来了解一下"android开源项目源码"。在Android开发中,开源项目意味着其源代码对公众开放,允许开发者查看、学习、修改甚至分发。这种开放性为开发者提供了深入理解项目设计和实现的机会,有助于提升个人...
在提供的"20个Java开源项目源码下载"压缩包中,包含了多个知名的Java项目,这些项目可以帮助开发者深入理解Java编程、软件架构以及特定领域的最佳实践。以下是这些项目的简要介绍: 1. **ExoPlayer-r2.18.5.zip**:...
这些开源项目涵盖了Java开发的多个领域,从数据库连接池到微服务、从区块链到代码生成工具,提供了广泛的功能选择。对于开发者来说,研究这些源码不仅可以提升技术能力,还可以借鉴其设计思路,应用于自己的项目中。...
这个压缩包文件"收集GitHub上的Flutter开源项目源码_2021_03_20.zip"显然包含了2021年3月20日时,GitHub上的一些Flutter开源项目的源代码。这些源码对于开发者来说是极其宝贵的资源,可以用来学习、参考和实践...
《Spring MVC + Hibernate + Freemarker 开源项目源码解析》 在现代Web开发中,Spring MVC、Hibernate和Freemarker是三个非常重要的技术组件,它们分别承担着不同的职责,共同构建了一个高效、灵活且可扩展的后端...
### 一、为什么学习Java开源项目源码 #### 1. 提升编程能力 通过阅读和分析高质量的Java开源项目源码,可以让你接触到各种复杂的编程场景和技术实现细节,这对于提升个人的编程能力和解决问题的能力有着不可替代的...
对于提供的"Java项目开源源码2023最新资源.docx"文件,这是一个可能包含项目列表、介绍或指南的文档。打开这个文档,你可以找到具体的项目链接,从而开始你的学习之旅。务必充分利用这些宝贵的资源,它们将是你成为...
对于初学者来说,了解并学习优秀的开源项目是快速掌握一门新语言的绝佳途径。"golang值得学习的优秀开源项目4合1"正是这样一份资源,它包含了四个精选的Go语言开源项目,旨在帮助新手深入了解Go语言的实践应用。 1....
此外,"JAVA上百实例源码以及开源项目.txt"这个文本文件很可能是对所有源码和项目的一个详细清单,包含每个实例的难度等级、目标和实现功能的简要说明,这对于有条理地学习和查找特定案例非常有帮助。 总的来说,这...
"liugh-openResources"这个文件名可能指的是一个开源项目或资源库,其中包含了与Java Web相关的各种组件、文档、示例代码和配置文件。这个压缩包可能包含了一个完整的Web项目实例,或者是一些用于教学或参考的开源...
源码是软件开发的核心,通过学习这些开源项目的源码,开发者可以深入理解它们的设计理念、实现方式以及优化技巧,从而提升自己的编程技能和解决问题的能力。 "源码软件"标签进一步确认了这是一个与源代码相关的资料...
本文将深入探讨"50款Android studio项目源码.zip"这一资源包,为初学者提供一个全面的学习路径,帮助他们快速掌握Android应用开发的核心技能。 我们要理解Android Studio的优势。它基于IntelliJ IDEA,提供了强大的...
在“flask开发项目源码参考”中,我们可以看到一个完整的Flask应用实例,包括其目录结构和各种接口案例。这个资源是个人测试开发版本,意味着它可能包含了开发者在实际项目中的实践经验和一些自定义功能。 首先,让...
这个平台的源码提供了一个全面的解决方案,允许开发者快速搭建自己的技术交流平台。让我们深入探讨一下其中涉及的关键技术和实践。 1. **Vue3**: Vue3是Vue.js的最新版本,它带来了许多性能优化和功能增强。其中...
开源项目-gcapizzi-moka.zip是一个由gcapiZZI创建的开源项目,主要是一个用Golang编程语言构建的模拟框架——Moka。Moka旨在为Go开发者提供一个强大而灵活的工具,以便在测试代码时能够模拟各种依赖对象,从而实现更...
【人脸识别开源SDK源码】是一种广泛应用于现代智能设备和软件中的技术,它涉及到计算机视觉、模式识别和深度学习等多个领域的专业知识。在这个开源SDK中,开发者可以获取到实现人脸识别功能的完整代码,以便在自己的...