当前位置:   article > 正文

关于源码阅读:源码资源、阅读工具、阅读方法_source code 和sourcetrail

source code 和sourcetrail

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

源码资源

源码资源就是我们所说的代码,按照代码提供的方式一般可以分两类,一类是在线资源,一类是本地资源。

在线资源

这类资源一般是一个网站,提供在线源码阅读与检索功能。
比如 GitHub 就是一个大型的源码分享网站。我们可以在 GitHub 上面分享我们的源码,其他人可以在线阅读,也可以下载到本地,通过导入源码开发或者阅读工具进行阅读。

另外还有一些专业方向的在线阅读源码网站,以 Android 为例,AOSPXRef 网站是一个专门的在线阅读 Android 系统源码的站点,在上面可以查看和搜索各种版本的 Android 系统源码。
在这里插入图片描述

本地资源

本地资源这个好理解,其实就是离线源码,所有的源码打包下载到本地,由本地的阅读工具导入打开阅读。
比如在 GitHub 上面通过 Clone 或者 Download 方式导入到本地的代码:
在这里插入图片描述
Clone 和 Download 两者不同的是,Clone 带有版本管理信息,比如 Git 仓库的日志,而 Download 就是纯代码,没有代码版本管理的信息。

两者区别
  1. 如果源码太大,建议使用在线资源,比如 Android 源码一个版本可能就有几十个 G ;下载下来费时费力,就算下载下来了,但是如果没有好的管理工具,比如查找、对比等,那么使用起来也很麻烦。在线资源已经拥有了所有版本的资源,查找使用方便。
  2. 本地资源可用性灵活,可以使用多款阅读工具阅读,自定义性比较强;在线资源一般只能使用网站提供的现有的工具检索和查看。
  3. 在线资源受制于第三方网站,有可能出现不稳定情况,比如网络或者网站倒闭等;而本地资源一般保存在本机,安全性和完整性有保障。
如何选择源码

因为源码资源很多,挑选好的源码有利于我们更加便利地阅读,也利于我们掌握所需知识,否则带来的结果可能就是花了很多时间看代码,不但没有找到想要的东西,而且浪费了不少时间。‘
所以这里在如何选择源码上有几点建议:

  1. GitHub Star 多的,一般超过 5k 的都可以作为阅读目标;
  2. 文档完善的,比如 GitHub 上的 Wiki 要健全;
  3. 持续更新的,比如最近半年以来一直有维护更新的;
  4. 用户数量多的,比如通过 issue 的数量可以反映出开发人员的参与热情。

阅读工具

这里我们根据在线资源和本地资源,分别介绍一款工具,方便代码阅读。

Octotree

Octotree 是一款 Chrome 插件,它可以将 Github 项目以树形结构展示,方便快速切换查看不同目录下的文件。
没有使用 Octotree 之前:
在这里插入图片描述
使用 Octotree 之后:
在这里插入图片描述
可以看到,Octotree 通过在左侧增加树形目录的形式,方便用户直接找到文件夹下的文件,否则需要一步一步点击进入,要知道每一次点击都需要刷新一次页面,重新发起一次 Http 请求,非常浪费时间。
需要注意的是,Octotree 是通过 Github API 获取项目数据的,如果超过了默认的 API 请求限制流,那么 Octotree 会需要我们提供 GitHub Personal Access Token。我们可以在 GitHub 如下路径中创建: Settings -> Developer settings -> Personal access tokens -> Generate new token 创建令牌。

SourceInsight

Source Insight 是一款老牌源码阅读工具。
它的特点是:a powerful project-oriented programming editor, code browser, and analyzer that helps you understand code, while you work and plan.
官网地址:https://www.sourceinsight.com/
目前支持 C/C++, C#, Java, Objective-C 等编程语言。
早期有一些 Android 开发人员也会使用这个工具来开发程序。
我们来看下 Source Insight 的界面,有点类似 VC IDE 的风格。
在这里插入图片描述

Sourcetrail

官网地址:https://www.sourcetrail.com/
它的特点是:Get productive on unfamiliar source code.
显而易见,它是用来阅读本地源码的,尤其是不熟悉的、新引入的。
目前支持 C 、 C++ 、Python 和 Java 语言,同时还提供了相关 SDK 用于拓展支持其它语言。
** SourceTrail 最大的特点是使用图形化的方式展示代码结构,使得开发人员更容易了解源代码。**

接下来我们简单介绍下它的使用方式,这里我们下载了 okhttp-3.1.2-sources 的源码,我们用 SourceTrail 打开它。
在这里插入图片描述
加载后首页可以看到 OkHtt 源码的概括,比如多少个文件,有哪些包,多少类等等。
我们选择 Dispatcher 文件:
在这里插入图片描述
可以看到, Dispatch 左边显示的是有哪些类调用到了 Dispatcher ,而右边显示的是 Dispatcher 调用了哪些类。
点击左边的 1 这个路径:
在这里插入图片描述
左边展示的是调用类具体调用的地方,右边显示的是具体的源码。
接下来我们点击右边 2 这个路径:
在这里插入图片描述
我们可以看到 Dispatcher 具体调用的 Util 中的方法的位置,右边显示的是具体源码。

阅读方法

阅读源码方式有很多,每个人可能都有自己的阅读习惯,并不是每一种阅读方式能一统天下。每一种阅读方式也有相应的应用场景。
每个人都有不同的阅读代码习惯,这里介绍几种阅读思路,供探讨,欢迎交流。

直接阅读

直接阅读是指以代码结构为主线去阅读。
以 Android 项目源码为例,项目结构都包含在 androidmanifest.xml 中,里面包含了启动类和 Application 的定义,可以从这里为阅读起点。
这种方式一般不建议采用,因为比较浪费时间,一个项目如果较大,而且没有完善的说明文档,那么阅读起来一定非常耗时而且痛苦。直接阅读方式比较适合了解项目的架构、解决方案之类的,而不适合逐字逐行完整阅读。
如果要按照直接阅读方式阅读代码,那么请做好以下几点工作:

  1. 源码有详细的说明文档,最好有架构图、需求文档、技术方案等;
  2. 做好阅读笔记,记录项目的关键技术点。
带着问题去阅读

这种方式比较适合接手项目来开发的方式,比如需要增加或者修改一个功能,你必须得在源码中找到对应的位置,查看它当前的解决方案,然后才能着手去修改。你不需要知道所有代码是怎么写的,只需要定位,然后阅读,最后修改。
比如改 Bug 就是一个典型的例子,通过 Bug 让你去找到出错的位置,然后看它是怎么实现的,实现中是怎么产生 Bug 的。这种方式也是目前很多项目中开发人员采用的方式来接手新项目。毕竟接手一个新项目不可能完全通读一遍代码,那么最好最快的方式就是通过修改 Bug 和完成产品需求这样的方式,带着目的性的去阅读源码,并且在此基础上进一步修改和优化源码。
比如接入第三方的 SDK,我们也是带着接入的目的去阅读 SDK 的代码。
这种相比直接阅读源码方式,优点在于:

  1. 既能快速介入项目,又能完成手头工作;
  2. 针对性强,不会盲目浪费时间。
带着解决方案去阅读

这是一种新的阅读思路,这里我们详细说下阅读思路。
比如我自己想出了一套网络请求的解决方案,那么我想看一下开源的网络请求框架是不是也是这样实现的呢?我们下载 OkHttp 源码,其中有 Http 请求和响应的处理,那我们能不能在阅读前先自己想一下,如果是我,该如何实现?我们先想到一种解决方案,然后带着这种解决方案去源码里寻找解决方案,然后对比一下两者的实现是不是一致的。
这种阅读方式的好处:

  1. 阅读前自己先有思考,而不是一味地看他人的思路;
  2. 对比自己的方案和开源源码的方案,能够更加深刻地理解两者的相同和异同,更好地理解方案。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/212637
推荐阅读
相关标签
  

闽ICP备14008679号