From 6b7f84de8e95fed99ebf80e31ed923a15373e085 Mon Sep 17 00:00:00 2001 From: xiangshang Date: Sun, 1 Nov 2020 11:17:51 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=AC=AC=E4=BA=8C=E9=83=A8=E5=88=86?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=AD=A6=E4=B9=A0=E5=92=8C=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=BC=80=E6=BA=90=E9=A1=B9=E7=9B=AE/=E5=BC=80=E6=BA=90?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=9A=84=E6=BA=90=E4=BB=A3=E7=A0=81=E8=AF=A5?= =?UTF-8?q?=E6=80=8E=E4=B9=88=E8=AF=BB=EF=BC=88=E4=BF=AE=E6=94=B9=EF=BC=89?= =?UTF-8?q?.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\346\200\216\344\271\210\350\257\273.md" | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" "b/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" index d31e4bb..c08060e 100644 --- "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" +++ "b/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" @@ -1,6 +1,27 @@ ### 选择合适的项目 -gitee上的项目有很多,作为新手的话,要适当选择适合自己的项目进行学习。可以先通过进行项目的README.md进行了解项目的大体情况,再进行研究。 +gitee上的项目有很多,作为新手的话,要选择适合自己的项目进行学习。 +#### 1、以实际项目为导向,可以是真正的工程项目,也可以是生活中实用的小项目,可以有方向性的选择项目; +#### 2、调查实际项目相关领域的常用开源项目,缩小选择范围,选择常用项目,学习过程可以获取更加丰富的资料; +#### 3、通过进行项目的README.md进行了解项目的大体情况,再进行研究。 ### 读源代码之前的准备工作 -在阅读源代码之前,可以阅读项目的相关文档,以及一些基础知识和代码的组织结构等。 +#### 1、领域知识储备 +开源项目往往以领域知识为背景进行开发的,了解领域知识中基本概念、原理、算法,必然会降低阅读理解源码的难度。 +#### 2、善用学习工具 +方便查找的IDE工具,阅读源码要要搞清楚函数之间的调用关系,ide拥有的代码静态分析功能和便捷的断点调试功能,可以帮助你快速厘清源码关系,加深了解源码。类图工具,方便梳理和记忆项目调用的逻辑关系。 +#### 3、了解开源项目 +查找和阅读该项目的博客和资料,对项目的目的、功能、基本使用和代码组织结构进行大概的了解,进一步明确学习内容和目标。 ### 读源代码时应该读些什么 -读源代码之前,可以阅读项目的业务流程以及如何实现这一过程的,代码出错时,又是如何进行修复的。 \ No newline at end of file +读源代码的过程一般分为两步,首先是学习使用项目,对项目功能、运行环境和模块结构有基本的认识,搭建可以用于开发、调试和验证的环境;然后是阅读源代码,在运行环境中调试、梳理、深入理解代码细节,并尝试参与开源项目。 +#### 1、学习使用项目 +(1)阅读项目文档,如getting started、example等,学习如何下载、安装和基本使用方法; +(2)如果项目提供example工程,尝试运行,解决运行过程中遇到的问题; +(3)尝试根据理解和需要修改example,通过调整各种参数观察表现结果,验证我们对项目的猜想和假设,加深对项目的认知; +(4)在了解基本使用后,需要根据用户指南深入了解项目,例如项目的配置管理,高级功能及最佳实践; +(5)如果时间允许,尝试从源码构建项目,根据项目构建指南,搭建一个可以用于开发、调试和验证的环境。 +#### 2、阅读项目源代码 +(1)阅读源代码的第一步抓住干,尝试理清楚代码运行的调用路径,通过debug来观察运行时的变量和行为,加入日志和打印可以更好的理解代码,大部分的细节需要在调试中理解; +(2)画逻辑关系图帮助理解源码,将代码主干画成流程图或UML图,帮助记忆和下一步阅读,大幅度提高对框架的理解速度; +(3)挑感兴趣的枝干代码来阅读,深入实现细节,包括使用的库、设计模式等; +(4)重视单元测试,加深对程序模块功能的理解; +(5)发现有可改进的地方,对项目开发者提出改进意见或者issue。 +(6)写笔记与写文章,通过写笔记记录学习的收获和经验,供以后使用,通过写文章对于问题进行深入的思考。 -- Gitee