`
bugyun
  • 浏览: 538519 次
社区版块
存档分类
最新评论

如何快速学习一个开源项目源码

阅读更多

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

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

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

    JAVA上百实例源码以及开源项目

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

    通用文件哈希修改项目源码(快速开发框架开源版)

    ②项目源码没有任何封装,全部开源(UI框架使用开源项目)。 ③适合有C#语言基础的人群使用。 ④通过学习本项目可以学习到快速开发框架的全部技巧。 ⑤本项目可以作为快速开发框架模板,只需简单修改就可以开发出...

    Android Stdudio各类APP源码工程(PS:共23个开源APP项目).rar

    《Android Stdudio各类源码工程共23个开源项目》本资源是自己学习Android期间在网上搜集的各种开源APP项目资料,亲测可以顺利运行,非常适合初学者快速入门,大家根据自己的编译环境稍作调整即可顺利编译,祝学习...

    快速开发框架C#源码完全开源版 基于ASP.NET MVC+EF6+Bootstrap框架等

    6、数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段 7、提高开发效率及质量。常用类封装,日志、缓存、验证、字典、文件、邮件、Excel。 8、...

    露营基地小程序开源项目源代码

    露营基地小程序是一款基于uni-app框架开发的露营类小程序,具有完整的前后端交互...该项目对于想要开发类似小程序的开发者来说,是一个非常有价值的参考资料,能够帮助开发者快速理解小程序开发流程和技术实现细节。

    基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip

    基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 基于SpringBoot快速开发的爬虫项目源码+项目使用说明+sql数据库.zip 1、该...

    计算机毕设论文&作业&学习资料&项目源码&教程等资源

    计算机毕业设计相关的资源包括论文、作业、学习资料、项目源码和教程等。这些资源可以帮助学生在毕业设计过程中更好地理解和实现相关的知识和技术。 首先,论文是毕业设计的重要参考资料之一。学生可以通过阅读相关...

    java版商城源码下载-UserManager:开源项目

    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您想学习Java平台的最佳学习案例,JeeSite还是...

    Java项目源码_ssm_明日知道.rar

    通过使用Java项目源码_ssm_明日知道.rar,您可以快速构建一个具有知识分享功能的网站,为您的用户提供一个便捷的学习和交流平台。 项目的主要功能包括: 1. 用户注册与登录:用户可以通过邮箱或手机号进行注册,并...

    竞赛资料源码-主要通过这个项目来学习mahout的功能和使用方式。mahout是一款开源的机.zip

    学习与项目开发:可以用作毕设、课设、作业和竞赛项目的开发基础,可以使用这些源码作为项目开发的基础,快速构建出具有竞争力的作品。 【互动与交流】: 资料鼓励下载和使用这些资源,并欢迎学习者进行沟通交流、...

    Android应用源码九宫格手势快速拨号项目.zip

    本项目是一个九宫格手势与拨号进行联系的呼叫项目源码,呼叫之前需要先创建一个联系人对应的手势,进入软件以后只需要滑动手势就可以进行直接拨号,程序界面精美操作便捷,整个项目比较大,分了12个包,使用了一些...

    开源bbs源码java-BMS:管理系统

    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您想学习Java平台的最佳学习案例,JeeSite还是...

    PHPOA协同OA办公软件开源版源码 PHPOACollaborationOA.rar

    其功能包含有个人办公、工作流、公文、人力资源、行政办公、档案、项目管理、知识库、在线交流、CRM系统等,含盖60多个功能点,适合于企业领域内若干规范和要求,构成高性能、高可用、高质量、底成本的信息化管理...

    开源bbs源码java-qxclxx:知乎

    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您想学习Java平台的最佳学习案例,JeeSite还是...

    积分管理系统java源码-timo:学习Timo开源项目

    积分管理系统java源码 Timo v2.0.3 项目介绍 TIMO后台管理系统,基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf + Shiro 开发的后台管理系统,采用分模块的方式便于开发和维护,支持前后台模块分别部署,目前支持...

    开源bbs源码java-lims_Jeesite:lims_Jeesite

    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您想学习Java平台的最佳学习案例,JeeSite还是...

    开源bbs源码java-todo:基于Jeesite快速开发平台实现的ToDo任务管理系统

    JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您想学习Java平台的最佳学习案例,JeeSite还是...

Global site tag (gtag.js) - Google Analytics