谈学习:读源码

小弟交日报,说看backbone和underscore的源码看不懂,我回了邮件给他,摘录于此,表达我对“读源码”这种行为的看法。


我不赞成新人以“读源码”的方式进行学习,因为相比于看文档、看范例、实操开发,“读源码”的效率实在太低了。

这是有原因的:

  1. 对于大部分新人来说,多半“单看每个字都认识,全放到一起就不知道啥意思了”……速度上不去,只能看懂“How”,无从知晓“Why”。最后虽然知道原作者用的A方法、B方法、C方法,但到实战的时候,还是不知道怎么做。
  2. 流行的库和框架,大都经历过数年的升级演变,甚至几千次提交,和早年刚出现时相比面目全非,逻辑也不再是浅显易见的。“读源码”不包含演进的过程,上来就是别人提炼过、推导过的精髓,更加难以理解。
  3. 读源码”难以获取成就感,因为成果难以衡量,里程碑难以界定,学到多少东西更是只有本人知道。把这个当某天的内容报告给领导,等于明确表示自己工作量不饱和,很可能招致领导的不满。

源码完全不该读么?自然不是。那么什么时候读呢?当技术精进到一定程度,或者业务诡异到一定程度,我们自然会遇到前人没有遇到过的问题;或者发现文档中语焉不详的地方。这个时候只能通过阅读源码找答案,而且这个时候读源码也是很合理高效的。因为:

  1. 很可能读源码是唯一途径。
  2. 带着问题去读,目标集中,效率会很高。已经知道了“Why”了,只关心“How”。
  3. 解决目标问题的过程中,可能学到很多之前不知道的东西。

你可能感兴趣的:(读源码,源码学习,学习方法)