如何有效的阅读源代码?

无论是JDK中常用类的源码,还是常用框架的源码,都是经过开发者深思熟虑、不断完善才形成的,所以想要理解当时作者的设计意图和思想不是很轻松。

看源码首先需要找到入口,顺着口子不断深入,可以通过断点调试跟踪线索。读源码守则第一条,切勿急躁,因为急也没用,要的就是慢功夫细读;第二条,切勿贪多,刚开始不要太在意细节,因为你可能会陷入细节中,若此时遇到更加难懂的细节,不仅会挫败你的兴趣和信息,还很耽误时间,不要急着把所有细节都弄的都很明白,第一次读先把大略思路弄明白,理出主干思路,第二遍读可以琢磨细节,有对应的细读;第三条,勤思考,读到和自己思路不太符合的时候勤思考为什么这么设计、用到了哪些设计及思想;第四条,可以配合一些书籍或博客对应着看,当遇到不会明白时还可以快速得到解答。

举个例子,读Spring框架源码,可以以BeanFactory bf= new XmlBeanFactory(new ClassPathResource("applicationContext.xml"))为入口,深入源代码中阅读主干路实现原理,你首先会看到applicationContext.xml的加载,接着你会看到对XML文件的验证及解析,然后解析获取bean信息、注册BeanDefinition。这一段阅读过程会看到很多实现细节,比如XML的验证、解析等,可以先不要深入研究具体的实现细节,知道大体的实现即可,这样可以快速的掌握整体结构,等整体骨骼结构弄明白了,再回过头来细细研究具体细节实现。阅读的过程中,可以编写一些单元测试,然后通过断点调试验证细节、跟踪线索,同时可以配合看一些书籍,这样可以提高阅读源码的速度和效率。

源码阅读不易,会经过迷茫、挣扎、光明、迷茫、恍然大悟等阶段,坚持就会有收获,难得是坚持!

为了更方便的技术交流,建了一个微信群,加博主微信wind7rui,盛邀你进群!

END

如果觉得有收获,记得关注、点赞、转发。

原文发布于微信公众号 - JavaQ(Java-Q)

原文发表时间:2018-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

Android P 开发者预览版首发!

2462
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 前言 2016年,我写了一系列的 VUE 入门教程,当...

2339
来自专栏魏艾斯博客www.vpsss.net

DNS 解析和 CDN 加速的区别与联系

1.2K4
来自专栏Android 开发者

Android 9 Pie 现已面向全球正式发布!

经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 —— Android 9 Pie 终于正式面向全球发布!

7.3K1
来自专栏腾讯Bugly的专栏

【Dev Club分享】QQ电话适配iOS10 Callkit框架分享

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了 ...

6406
来自专栏杨建荣的学习笔记

insert导致的性能问题大排查(r11笔记第26天)

今天开发的同学小窗口消息给我,向我咨询一个ORA错误的问题。 错误代码是ORA-30036,使用oerr ora 30036查看,由于是undo空间无法扩展导致...

35015
来自专栏SDNLAB

网络可编程与验证

作者简介:唐昊,现就职于华为,从事云网络研发工作。本文所有观点仅代表作者个人观点,与作者现在或者之前所在的公司无关。

2552
来自专栏工作随笔

改VB.NET“偷懒”技巧

【开篇胡侃】虽然搞软件开发很多年了,但似乎从没有动手写过什么(很丢脸的感觉),因为,我的精力都献给了我的其他爱好,比如健身、美食、旅游等等,反而把自己最该专注的...

32513
来自专栏云计算D1net

云服务存在局限性,你如何找到最合适的解决方案

云计算不仅仅代表着近乎无限的资源,我们也需要了解其中可能存在的种种性能问题。 以Amazon AWS与微软Azure为代表的公有云服务属于基于控制台的编排方案,...

3343
来自专栏IT技术精选文摘

全渠道客服中心聊天机器人实战

本文要点 客服中心的渠道多种多样,而且数量一直在增长。 企业需要支持所有这些渠道,可以自己开发服务,也可以向CPaaS供应商购买服务,或者集成已有的服务。 自研...

4287

扫码关注云+社区

领取腾讯云代金券