源码分析目的是什么
源码分析的目的并不是单纯的为了肢解代码, 这只是过程, 它的目的是为了让自己能够对代码的理解更加深刻, 培养自己的直观理解力, 增强自己的代码输出能力, 同时也增加自己对复杂代码的理解能力. 所谓的源码分析, 其实是对一个复杂的源码进行降维分析, 降到自己的能力所能理解的程度, 这样, 随着源码分析能力的增进, 个人的理解能力也会上升.
源码分析到底在分析什么
- 代码实体细节, 对一些特定的问题, 通过分析源码, 我们进行判断这段代码具体是如何实现解决问题的方法, 对于以后来说, 我们就知道了这个知识点, 一旦遇到类似问题, 我们有对应的解决方案.
- 代码抽象细节, 在知道代码的实体之后, 我们再分析代码的规范设计, 以及代码的逻辑技巧, 大约能够明白作者在这段代码中的巧妙用心, 懂得了这些技巧, 我们可以提升自己的代码能力.
- 代码架构体系, 代码的架构本身并不是清晰可见的, 甚至是一段代码中看不出来的, 它是我们阅读完所有代码之后, 对代码的整体有一个详细了解, 从而提取出来一套架构的描述. 对我们开发者来说, 能够获得的帮助是以后开发的时候, 可以根据需求判断, 是否可以应用或者参考此种框架.
- 寻找美学体验, 在分析完成之后, 我们可以根据自己的技术能力, 对这个代码的逻辑缜密度, 代码的美观程度以及代码的体系化进行评估. 这是最抽象的一部分工作, 但是, 我认为这是最重要的一个工作, 如果仅仅提取一些知识点, 其实对个人来说, 提高的层次并不会太高, 那只是应用层的. 而我们最终是希望这些代码体验, 可以作为我们个人的直观能力进行培养的, 以后一旦碰到代码, 即可在很粗略的范围内, 大致就理解代码的各个层次.
我打算怎么做
我的做法是选择大约20个iOS的开发库和开源项目, 然后按照上述的4点进行整理, 每整理出来一套思路, 就写一篇文章. 如果遇到相对比较庞大的项目, 可能分多篇进行分析. 在我的目标中, 几个比较重点要分析的库, 包括AsyncDisplayKit, RxSwift, Parse for iOS, Realm等. 这几个将会作为重点, 放在最后来讲解.
先来一个开胃菜:
下一篇, 将是第一讲 -- MBProgressHud的源码分析
敬请期待