源码阅读技巧

作者:Trinea
链接:https://www.zhihu.com/question/26343609/answer/32624241
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

泻药。在 Android 开源项目源码解析公共模板 @codeKK 开源站 写过分析步骤,这里再介绍下自己的看法:

这里的学习分为快速掌握和全部项目分析,开源项目 Android 一般分为完整项目(App)和工具库,分析的话可概括为总分总:

1 总 ---- 功能了解
了解项目功能(Sample 和文档)以及主要分为几个大块。另外明白你的需求,比如 PullToRefresh 的下拉实现。
PS:(1)大家可以自己先想想如果是自己会怎么去实现这个项目,或许看源码过程中会发现思想碰撞。
(2)如果时间比较紧,可以先 Google 一些该项目相关的文档结合代码看看,帮助快速掌握,不过网上分析文章参差不齐,需谨慎。

2 分 ---- 详细设计
这里正式开始代码分析,分析过程中如果脑子记不住,多动手记下主要类、函数等作用
(1) 入口
对完整 App 来说就是 Manifest 找到入口 Activity,对于工具库从调用接口中判断入口类。然后在 IDE 中一步步深入即可。
PS:一般不错的开源项目规范都比较好,类、函数、变量从名字上就可以了解作用,所以如果需要快速掌握原理的话看觉得是重点的函数即可。

(2) 核心类
在上面的一步步深入过程中已经接触了不少类,大致了解各个类的主要作用

3 总 ---- 总体设计
(1) 功能流程图

上面 2-(1) 的过程完成后已经大致了解项目的流程,不费事的话可以简单画下流程及相关类、函数。
如 Retrofit、Volley 的请求处理流程,Android-Universal-Image-Loader 的图片处理流程图。

(2) 总体设计
整个库分为哪些模块及模块之间的调用关系。
如大多数图片缓存会分为 Loader 和 Processer 等模块。

4 回顾
这时候从 3-2-1(总体设计->流程图->详细设计->功能介绍)反序看,大致就能了解作者最初是怎么设计的了

对于快速分析可以走 1-2(1)-2(2)-3(1) 的步骤。


${项目名} 源码解析

  作者: Trinea

本文为 Android 开源项目源码解析 中 ${项目名} 部分
项目地址:${项目名},分析的版本:${commitId}.substring(0, 7),Demo 地址:${项目名} Demo
分析者:${分析者},分析状态:未完成,校对者:Trinea,校对状态:未开始

建议大家看下 VolleyUILDaggerEvent Bus 的分析,了解分析该到什么程度,以及类似流程图和总体设计该怎么做。

 

复制一份到自己的项目文件夹下,然后根据自己项目替换掉 ${} 内容,删掉本行及上面两行。

 

1. 功能介绍

功能介绍,包括功能或优点等

 

完成时间

  • 一天内完成

 

2. 详细设计

2.1 类详细介绍

类及其主要函数功能介绍、核心功能流程图,流程图可使用 Google DrawingVisioStarUML

 

2.2 类关系图

类关系图,类的继承、组合关系图,可是用 StarUML 工具。

 

完成时间

  • 根据项目大小而定,目前简单根据项目 Java 文件数判断,完成时间大致为:文件数 * 7 / 10天,特殊项目具体对待

 

3. 流程图

主要功能流程图

  • 如 Retrofit、Volley 的请求处理流程,Android-Universal-Image-Loader 的图片处理流程图
  • 可使用 Google DrawingVisioStarUML 等工具完成,其他工具推荐??
  • 非所有项目必须,不需要的请先在群里反馈

 

完成时间

  • 两天内完成

 

4. 总体设计

整个库分为哪些模块及模块之间的调用关系。

  • 如大多数图片缓存会分为 Loader 和 Processer 等模块。
  • 可使用 Google DrawingVisioStarUML 等工具完成,其他工具推荐??
  • 非所有项目必须,不需要的请先在群里反馈。

 

完成时间

  • 两天内完成

 

5. 杂谈

该项目存在的问题、可优化点及类似功能项目对比等,非所有项目必须。

 

完成时间

  • 两天内完成

 

6. 修改完善

在完成了上面 5 个部分后,移动模块顺序,将
2. 详细设计 -> 2.1 核心类功能介绍 -> 2.2 类关系图 -> 3. 流程图 -> 4. 总体设计
顺序变为
2. 总体设计 -> 3. 流程图 -> 4. 详细设计 -> 4.1 类关系图 -> 4.2 核心类功能介绍
并自行校验优化一遍,确认无误后将文章开头的
分析状态:未完成
变为:
分析状态:已完成

 

本期校对会由专门的 Buddy完成,可能会对分析文档进行一些修改,请大家理解。

 

完成时间

  • 两天内完成
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值