如何提高阅读源代码的效率

记得在开源流行之前,我看过的代码紧限于所参与的项目,能有个几万行就不错哩。后来很多优秀开源项目都相继蹦出来了,阅读的代码量那叫一个大呀!不得不看。我现在掉到android这个大坑里,每天都要看很多源代码。以前做过J2EE,看Struts2、Lucene、OSWorkflow、iText等项目的源码,动机有三:文档不足、找问题的原因、好奇。当时有个项目用到了Dojo,这家伙可以说是源码最多的开源Javascript框架了,文档却严重不足,也没什么人用,只能看源码了。

要想快速并高效地阅读源码,一定要有好方法,不然看着会挺费劲,当然,用什么方法取决于具体的情况。我就把自己总结的方法给大家show一下,互相交流交流:

1、一边阅读代码一边写注释。这是我用过的最好的方法,对代码理解得更深入,看一些重要代码或者特别难懂的代码时挺有用。更何况,注释也是一种文档嘛。

2、一边阅读代码一边绘制UML。这个方法适用于类之间的关系较复杂和调用层次较深的情况,我一般都是先绘制顺序图,然后为顺序图中的类绘制关系图。

3、通过Debug来跟踪程序的主要执行过程,这样就可以分清主次了,阅读的时候更有针对性。

4、类的快速阅读。先弄清楚它在继承链中的位置,看看它的内部状态,也就是成员变量,一般来说,类的对外接口都是对成员变量的访问、加工、代理等,然后看看它的对外接口,也就是公有成员函数,识别核心的一个或多个函数,这时候你应该可以大概了解这个类的职责或作用了。可能这个类是某个设计模式中的一个组成部分,所以,设计模式的掌握对代码的快速阅读也是很有帮助的。

5、带着问题去阅读。比如想了解android中的消息机制,那么看看Looper、Handler、MessegeQueue这几个类就可以了,其他的不要去看,要不然就跑题了。

下面列几个阅读源码时所处的情景,在特定场景下用哪些方法:
                      不太熟悉业务逻辑,还不是很清楚它是干啥的,可以用3、5。
                      代码量很大,有几十万行,甚至百万行,可以用2、3、5。
                      你无法看见程序的运行过程,比如没有用户界面,也有可能是无法运行的,可以用3、5。
                      设计复杂,用了大量的设计模式,调用链很深,可以用1、2、3、4、5。
                      时间有限,没有那么多时间让你看源码,可以用3、5。

如何提高阅读源代码的效率 .相关推荐

  1. 提高阅读源代码的效率 转

    记得在开源流行之前,我看过的代码紧限于所参与的项目,能有个几万行就不错哩.后来很多优秀开源项目都相继蹦出来了,阅读的代码量那叫一个大呀!不得不看.我现在掉到android这个大坑里,每天都要看很多源代 ...

  2. 如何阅读源代码(关键词:阅读/源代码/高效率)

    参考文献: 1. 怎样阅读源代码,怎样提高阅读源代码的效率: 2. 牛人教你如何阅读源码: 3. 如何正确的阅读源代码?: 4. 如何有效的阅读源代码.

  3. [置顶] 为什么要阅读源代码?如何有效的阅读源代码? 选一些比较优秀的开源产品作为源代码阅读对象?...

    盛大TeamHost上有个关于学习开源项目的wiki :http://www.teamhost.org/projects/learn-with-open-source/wiki/Wiki 一.为什么要 ...

  4. 为什么要阅读源代码?如何有效的阅读源代码? 选一些比较优秀的开源产品作为源代码阅读对象?

    一.为什么要阅读源代码? 很多作家成名之前都阅读过大量的优秀文学作品,经过长期的阅读和写作积累,慢慢的才有可能写出一些好的.甚至是优秀的文学作品. 而程序员与此类似,很多程序员也需要阅读大量的优秀程序 ...

  5. codemap~~~阅读源代码神器推荐

    在阅读源代码的过程中,我们常常陷于繁杂的逻辑,庞杂的项目结构,在解析具体功能时,不仅调用层次深,而且不同的功能总是分布在不同的文件目录下. 当我们用ide阅读源代码,每次都可能打开数十个文件,而每次分 ...

  6. 提高阅读代码效率神器 Sourcetrail

    Sourcetrail 简介 Sourcetrail 是一个免费的开放源代码跨平台资源浏览器,可帮助您提高不熟悉源代码的工作效率. Sourcetrail 比其它开发工具优势 软件开发人员将大部分时间 ...

  7. 程序员提高之源代码阅读篇

    前言 最近刚换了新工作,正在熟悉公司环境,因此博客更新有所耽误,那么本篇也是选自入职部门分享的主题,从今年5月份开始,我也在阅读 Spring 的源码,参考网络上的内容以及本人学习的一些经验,总结出本 ...

  8. 如何用思维导图提高阅读效率?分享高效阅读思维导图模板及绘制技巧

    书是用文字表达其内容,千变一律的小方块字体,却散发着独特的魅力,阅读时或许用你的一目十行扫过去,可以大致了解到写了什么,但若深究起来你可能并不记得细节内容.就好像远远的看一面墙,你能看到墙面漂亮的颜色 ...

  9. 思维导图提高阅读效率简单的方法是什么?分享高效阅读思维导图模板及绘制技巧

    书是用文字表达其内容,千变一律的小方块字体,却散发着独特的魅力,阅读时或许用你的一目十行扫过去,可以大致了解到写了什么,但若深究起来你可能并不记得细节内容.就好像远远的看一面墙,你能看到墙面漂亮的颜色 ...

最新文章

  1. Linux内核NAPI机制分析
  2. 树形DP题目。。。转载
  3. 编程名言(有些趣味性)
  4. ubuntu系统中samba服务器搭建
  5. bin文件转换成html,怎么样把BIN文件转换成ISO文件
  6. 2018年第九届蓝桥杯 - 国赛 - C/C++大学B组 - B. 激光样式
  7. [linux] 查看网络丢包信息
  8. 密码学加密算法分类_密码学中的国际数据加密算法(IDEA)
  9. leetcode41 --- firstMissingPositive
  10. 让IE8按照IE7的模式解释网页-【一句话】
  11. 计算机组成原理中CPI、MIPS、CPU执行时间、主频等计算
  12. 为孩子进行启蒙教育的6种基本思维导图类型分析
  13. 智能设计课程v2.0 | DesignX 2021版
  14. Java蓝桥杯 算法提高 九宫格
  15. 北纬三十度“神命谷”旅游策划方案
  16. 用手机计算机计算三次根号,手机自带计算器不行求推荐一个能开3次根号的 – 手机爱问...
  17. CNC脱机源代码 USB雕刻机CNC 3联动 步进电机控制器CNC脱机源代码
  18. c语言写一个会动的爱心图片,一键生成心形bmp图片
  19. 语音广播服务器,Luna云语音平台广播系统
  20. Python快速刷题网站——牛客网 数据分析篇(十一)

热门文章

  1. 25外观模式(Facade Pattern)
  2. 【转】10分钟精通SharePoint - VS开发模板
  3. fatal error lnk1120: 1 个无法解析的外部命令_3月1日七牛云存储割韭菜的应对方法...
  4. python tempfile自动删除_Python tempfile模块生成临时文件和临时目录
  5. c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
  6. 【数学+编程】对函数进行抽象
  7. Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象
  8. c++ pdflib输出表格_DescrTab2包,输出SCI级别的描述统计表
  9. CCIE-LAB-第九篇-BGP下一跳+EBGP防环+伪装AS+通过标签过滤路由
  10. 【POJ - 2186】Popular Cows (Tarjan缩点)