如何读源码-方法论总结

最近实现了一个简单Android上的Web服务器。

在实现的过程中对于HTTP协议的理解更加深刻了。

我参考了NanoHttpd这个开源的项目,项目完成之后从中也深刻的认识到,读源码是一个软件工程师在架构师道路上的必经之路,也是正确的道路。

就像听音乐,如果听得多了,自然审美品位就会提高。

就像跟人交流的多了,也就能发现自己的缺点,变得越来越善于交流。

写代码也是一样,首先得有见识,要出去走走看,对于软件工程师来说,就是耐心的看看经典的设计。

读经典的项目,能够发现业界的最佳实践,深入思考这些最佳实践和设计,对我们的设计能力会有很大的提升。

在读完这个项目之后,我简单的总结了下读源码的方法论如下:

  1. 读小项目
    可遇不可求的小项目真的是我们学习的最好机会。
    麻雀虽小五脏俱全,因为很小很精简,我们能很快的有全局感,因此在专注于细节的时候会跟其他部分有很好的联系,有疑问也能从更高的一个层次解释为何要这么干,就像给了你一张地图,你就能明白那些地点是你感兴趣的,那些你根本不用关注。读小项目的好处就是你能比较快速的得到这样一张地图,而过于大的项目可能就会让我们只见树木不见树林。
  2. 运行起来
    运行的过程是一个检测项目是否正确的最简单的方法。无论是什么东西,在获得之后肯定要先检测下好不好用,就像你买了一个东西,如果不好用浪费的是money,而看不能运行的源码浪费的是我们更加宝贵的时间,不要迷信任何传言,实践是检验真理的唯一标准。除此之外,运行也能引导你进一步探索,保持对未知的好奇是不断进步的驱动力。
  3. 找到切入点
    这个切入点可以由一个问题引入,比如程序是如何开始的,或者在上一步运行的过程中可能会有log打印出来,不妨看看log中有没有感兴趣的点,以这些点作为引入来调试和梳理部分逻辑。
  4. 只有一个关注点
    为什么选择阅读这个项目呢?
    一定是因为不懂,想要了解相关的概念和知识,但是在阅读运行调试的过程中常常会因为很多的疑问纠缠在一起而无法专注,甚至是最终放弃,这都十分可惜。
    解决的一个方法就是保持一个关注点,一次只关心一个问题,该问题如果是通性问题,经常需要我们去当前阅读的项目之外去探索答案。如果该问题是具体的细节问题,首先问问我们自己需不需要去花费精力去关注,如果答案是否定的,请调整关注点。
    保持关注点就像你看了看细节之后,又看看手上的地图,始终提醒自己这是不是目的地,如果不是,就不用看了。
  5. 联系和回忆
    最开始的时候我们有一个全局地图,但在阅读完感兴趣的具体细节之后,我们亲自走通了一条通往目的地的路,这时候回头来看地图,会有一种满足感,当把这些点联系在一起的时候,会有原来如此的瞬间,这就是明白了。
    在联系和回忆阶段需要我们在脑中重新演练一遍程序运行的过程,看看还有哪些概念是没有明白的,要主动去了解掌握。这个阶段,最重要的是不要看任何书面的资料,只在脑中推演联系概念。
  6. 其实你没掌握
    看懂和实际掌握了是两回事,为了保证彻底的内化,需要我们亲自实现一把,最少也要搭建一个原型版,以输出来检测学习成果是再好不过的学习方式。
    这一步会过滤掉很多人,因为耐心不是每个人都有的,很多人太浮躁,浮躁到不明白自己遇到的问题的价值,这个问题如果是基础以后一定会反复的出现,一次性的搞懂它,会让你进步神速。

优秀的道路从不拥挤,你只是需要耐心。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值