小弟交日报,说看backbone和underscore的源码看不懂,我回了邮件给他,摘录于此,表达我对“读源码”这种行为的见解。框架
我不同意新人以“读源码”的方式进行学习,由于相比于看文档、看范例、实操开发,“读源码”的效率实在过低了。学习
这是有缘由的:backbone
- 对于大部分新人来讲,多半“单看每一个字都认识,全放到一块儿就不知道啥意思了”……速度上不去,只能看懂“How”,无从知晓“Why”。最后虽然知道原做者用的A方法、B方法、C方法,但到实战的时候,仍是不知道怎么作。
- 流行的库和框架,大都经历过数年的升级演变,甚至几千次提交,和早年刚出现时相比面目全非,逻辑也再也不是浅显易见的。“读源码”不包含演进的过程,上来就是别人提炼过、推导过的精髓,更加难以理解。
- “读源码”难以获取成就感,由于成果难以衡量,里程碑难以界定,学到多少东西更是只有本人知道。把这个当某天的内容报告给领导,等于明确表示本身工做量不饱和,极可能招致领导的不满。
源码彻底不应读么?天然不是。那么何时读呢?当技术精进到必定程度,或者业务诡异到必定程度,咱们天然会遇到前人没有遇到过的问题;或者发现文档中语焉不详的地方。这个时候只能经过阅读源码找答案,并且这个时候读源码也是很合理高效的。由于:开发
- 极可能读源码是惟一途径。
- 带着问题去读,目标集中,效率会很高。已经知道了“Why”了,只关心“How”。
- 解决目标问题的过程当中,可能学到不少以前不知道的东西。