如何研究一个开源项目
Posted 攻城狮Chova
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何研究一个开源项目相关的知识,希望对你有一定的参考价值。
项目前的准备
目标明确
- 在项目学习之前,要梳理以下几个方面:
- 希望通过项目学习到哪些技术
- 重点需要掌握哪些知识点
- 这些知识点属于自身技术体系中的哪个环节
- 这些知识点哪些需要熟练掌握,哪些需要理解原理
良好的学习方法
- 项目的学习过程中,要带着问题和思考:
- 项目核心需要解决的问题场景
- 项目使用了哪些技术方案
- 为什么需要这些技术
- 方案选择考虑主要有哪些
- 系统模块这样分层和实现的好处
- 方法的实现和性能能否进一步优化
复习与应用
- 对在项目中学习到的技术,知识点要在不同的场景中反复练习和使用
- 并且对使用过程中遇到的问题不断总结和反思
项目中的实践
了解项目业务背景
- 先对项目的业务背景和技术体系有一个大致的了解
- 为了了解项目核心要解决的问题领域
- 了解系统涉及哪些技术体系,这样在学习项目的过程之前可以做好相关的技术知识准备
- 学习项目中要求的前备知识,将涉及到的技术相关的基础知识再复习和学习一遍,避免因为对一些基础原理的不了解,导致源码理解困难以及无法深入研究的问题
- 这样学习完之后,也能知道,什么样的问题可以使用什么技术,什么方案以及如何解决的
学习系统设计文档
- 熟悉系统设计文档,按照架构文档,概要设计,详细设计的方式递进了解系统设计文档
- 通过设计文档的学习,快速对各个系统模块有一个框架性的认识,知道各个系统模块的职责,边界,如何交互,系统的核心模型等等
- 项目涉及的关键业务流程是什么?
- 对于系统设计文档的学习,一定要带着问题和思考:
- 项目背景中的核心业务问题
- 架构师是如何转化成技术落地的
- 方案为什么要这么设计
- 模型为什么要这样进行抽象
- 这样做的好处
阅读系统源码
- 通过设计文档的学习,对系统设计有了整体的了解之后,就可以结合业务场景,相关问题看代码实现
- 基于业务需求阅读代码实现
- 根据项目的文档搭建项目的开发环境
- 通过项目的相关依赖,也可以是Maven项目的pom.xml文件或者Gradle项目的build.gradle文件查看项目的技术架构
- 项目中使用的最底层的框架是什么?
- 项目依赖了哪些相关的包?基本要知道每个包的作用,可以挑选自己重点的包看
- 项目使用了什么数据库?
- 项目中缓存的使用?
- 项目中使用了什么消息队列?
- 项目中如何进行权限管理的?
- 阅读源码需要注意方式方法:
- 自顶向下,分层分模块的阅读
- 先整体,后模块,然后单个功能点的方法层层递进
- 先快速走读整个代码模块的逻辑,然后再精读某个类,方法的实现
- 阅读代码时,一边阅读一边整理相关代码模块,流程分支,类图和时序图等,可以使用IDE工具自动生成
- 阅读代码不仅需要关注功能的实现,更重要的是关心代码的思路和设计原理,性能考究,设计模式以及设计原则的应用等
- 首先关注项目代码的设计文档,理清项目的设计逻辑和功能,不要做从代码中反推逻辑和功能的事情
项目中的学习
制定计划
- 梳理一份适合自己的技术规划,并且制定明确的学习路线和计划,让学习更有方向和重点
思考练习
- 技术编程需要不断的练习,思考,实践和反复训练
- 从了解,会用,知原理,优化这个发展方向不断演进
分享交流
- 保持思考的习惯,将学到的技术多多与别人分享
- 多多参加技术相关活动,多多参与开源项目
以上是关于如何研究一个开源项目的主要内容,如果未能解决你的问题,请参考以下文章
论文千千万,如何发现和综述新研究?这里有个利用AI技术的热门开源项目
开源软件安全性研究:流行的开源项目中漏洞数量在2019年翻了一倍