如何研究一个开源项目

Posted 攻城狮Chova

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何研究一个开源项目相关的知识,希望对你有一定的参考价值。

项目前的准备

目标明确

  • 在项目学习之前,要梳理以下几个方面:
    • 希望通过项目学习到哪些技术
    • 重点需要掌握哪些知识点
    • 这些知识点属于自身技术体系中的哪个环节
    • 这些知识点哪些需要熟练掌握,哪些需要理解原理

良好的学习方法

  • 项目的学习过程中,要带着问题和思考:
    • 项目核心需要解决的问题场景
    • 项目使用了哪些技术方案
    • 为什么需要这些技术
    • 方案选择考虑主要有哪些
    • 系统模块这样分层和实现的好处
    • 方法的实现和性能能否进一步优化

复习与应用

  • 对在项目中学习到的技术,知识点要在不同的场景中反复练习和使用
  • 并且对使用过程中遇到的问题不断总结和反思

项目中的实践

了解项目业务背景

  • 先对项目的业务背景和技术体系有一个大致的了解
    • 为了了解项目核心要解决的问题领域
    • 了解系统涉及哪些技术体系,这样在学习项目的过程之前可以做好相关的技术知识准备
    • 学习项目中要求的前备知识,将涉及到的技术相关的基础知识再复习和学习一遍,避免因为对一些基础原理的不了解,导致源码理解困难以及无法深入研究的问题
  • 这样学习完之后,也能知道,什么样的问题可以使用什么技术,什么方案以及如何解决的

学习系统设计文档

  • 熟悉系统设计文档,按照架构文档,概要设计,详细设计的方式递进了解系统设计文档
  • 通过设计文档的学习,快速对各个系统模块有一个框架性的认识,知道各个系统模块的职责,边界,如何交互,系统的核心模型等等
  • 项目涉及的关键业务流程是什么?
  • 对于系统设计文档的学习,一定要带着问题和思考:
    • 项目背景中的核心业务问题
    • 架构师是如何转化成技术落地的
    • 方案为什么要这么设计
    • 模型为什么要这样进行抽象
    • 这样做的好处

阅读系统源码

  • 通过设计文档的学习,对系统设计有了整体的了解之后,就可以结合业务场景,相关问题看代码实现
  • 基于业务需求阅读代码实现
  • 根据项目的文档搭建项目的开发环境
  • 通过项目的相关依赖,也可以是Maven项目的pom.xml文件或者Gradle项目的build.gradle文件查看项目的技术架构
    • 项目中使用的最底层的框架是什么?
    • 项目依赖了哪些相关的包?基本要知道每个包的作用,可以挑选自己重点的包看
    • 项目使用了什么数据库?
    • 项目中缓存的使用?
    • 项目中使用了什么消息队列?
    • 项目中如何进行权限管理的?
  • 阅读源码需要注意方式方法:
    • 自顶向下,分层分模块的阅读
    • 先整体,后模块,然后单个功能点的方法层层递进
    • 先快速走读整个代码模块的逻辑,然后再精读某个类,方法的实现
    • 阅读代码时,一边阅读一边整理相关代码模块,流程分支,类图和时序图等,可以使用IDE工具自动生成
    • 阅读代码不仅需要关注功能的实现,更重要的是关心代码的思路和设计原理,性能考究,设计模式以及设计原则的应用等
    • 首先关注项目代码的设计文档,理清项目的设计逻辑和功能,不要做从代码中反推逻辑和功能的事情

项目中的学习

制定计划

  • 梳理一份适合自己的技术规划,并且制定明确的学习路线和计划,让学习更有方向和重点

思考练习

  • 技术编程需要不断的练习,思考,实践和反复训练
  • 从了解,会用,知原理,优化这个发展方向不断演进

分享交流

  • 保持思考的习惯,将学到的技术多多与别人分享
  • 多多参加技术相关活动,多多参与开源项目

以上是关于如何研究一个开源项目的主要内容,如果未能解决你的问题,请参考以下文章

论文千千万,如何发现和综述新研究?这里有个利用AI技术的热门开源项目

开源软件安全性研究:流行的开源项目中漏洞数量在2019年翻了一倍

一文盘点近期热门机器学习开源项目!(研究框架AutoML库深度学习...)

安全研究:2019年流行的开源项目漏洞数量翻了一倍

java开源项目的java开源项目介绍

干货丨如何评估开源项目的社区参与度