• 我们是为了什么去读源代码?为了理解它。为了找bug,为了知道这些代码和系统中的其他软件是怎样交互的。我们还会为了回顾、品评而去读。为了找出其中的接口信息,为了理解和找到不同模块之间的界线,为了学习,我们都会去读源代码。
    • 读代码的过程不是线性的。我们甚至都不能确定一个程序有没有结束,很多程序是不会终止的。我们应该在章节、模块之间跳转,反复阅读。
      • 我们也可以选择通读单个模块,但是这样我们就无法理解这个模块所引用的其他模块的代码。
      • 我们也可以根据程序的执行顺序去阅读,但是我们最后并不会清楚程序会向哪里执行。
    • 人们常说好的注释应该告诉读者为什么这件事情要这样来做,而不是一段代码在做什么。
    • 源代码和配置文件之间的界线非常的窄。对配置文件来说,表达力强、可读性强和直接之间永远是冲突的。


    • 如果是“来路不明”的代码,很可能没有用到git管理自己的项目,这种代码只能自求多福了,一般没有什么特别好的阅读思路。

    ——————————————————————————————————
    1. 代码短(1000行左右),硬读没问题。
    2. 代码长(超过10000行),只能自求多福了。推荐工具:source insight
    3. 代码阅读常用手段:全局搜索;定位核心代码;
    忽略项目中使用的开源库代码;最好能自己制作类图,或者流程图,便于理清思路。
    ——————————————————————————————————

    • 腾讯IMWEB负责人说:

    首先,搞清楚自己要读懂他们的原因和动机。
    其次,可以先看下这些优秀框架或者库的设计文档和架构图,这样会让你宏观上对一些概念有些认识。
    然后,从你最感兴趣的一个点,开始设置断点,跟进去看发生了哪些事情。 和架构设计哪一块是match的。
    有人补充:最快,最易懂方法。断点单步调试

    • 一边阅读代码一边写注释。这是我用过的最好的方法,对代码理解得更深入,看一些重要代码或者特别难懂的代码时挺有用。更何况,注释也是一种文档嘛
    • 通过Debug来跟踪程序的主要执行过程,这样就可以分清主次了,阅读的时候更有针对性
    • 类的快速阅读。先弄清楚它在继承链中的位置,看看它的内部状态,也就是成员变量,一般来说,类的对外接口都是对成员变量的访问、加工、代理等,然后看看它的对外接口,也就是公有成员函数,识别核心的一个或多个函数,这时候你应该可以大概了解这个类的职责或作用了。可能这个类是某个设计模式中的一个组成部分,所以,设计模式的掌握对代码的快速阅读也是很有帮助的。
    • 带着问题去阅读

    1)读代码最忌讳的是不抓结构抓细节,只见树木不见森林
    2)首先应该先了解代码的功能业务,在了解业务逻辑的情况下,进行代码阅读觉得是事半功倍的,可以先多用用列跑起来,看看功能。
    3)阅读代码有两种模式:top-down 和 bottom-up
    _