如何提高阅读源代码的效率
记得在开源流行之前,我看过的代码紧限于所参与的项目,能有个几万行就不错哩。后来很多优秀开源项目都相继蹦出来了,阅读的代码量那叫一个大呀!不得不看。我现在掉到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。
分享到:
相关推荐
MATLAB遗传规划工具箱程序源代码,可以大大提高编程的效率.rar
通过研读论文和阅读源代码,学习者可以深入了解Spring Boot和Vue.js的应用技巧,掌握Web开发的基本流程和关键技术。 此外,该项目还具有一定的实际应用价值,能够为乡政府提供一套实用的管理工具,帮助乡政府更好地...
同学们可以直接在此基础上进行修改与扩展,极大地节省了开发时间,提高了开发效率。 总的来说,“基于Spring Boot开发的JAVA社团管理系统设计与实现-毕业论文(附毕设源代码).rar”这一资源包,为社团管理系统的...
同时,附带的源代码更是为开发者提供了一个可直接运行的人事管理信息系统示例,极大地降低了开发门槛,提高了开发效率。 此人事管理信息系统具备员工信息管理、部门管理、考勤管理、薪资管理、报表统计等多项核心...
“基于SSM框架开发的绿色农产品推广应用网站+Vue-毕业论文(附源代码).rar”这一资源,为有志于绿色农产品推广与信息化建设的开发者及研究人员提供了一个宝贵的项目模板和学术参考。该项目采用SSM(Spring+...
计算机专业毕设精选:ASP网络办公助理设计(论文+源代码) 本资源为计算机专业毕业生提供了一个全面、实用的网络办公助理设计方案。通过结合ASP技术和网络办公的实际需求,本设计旨在实现一个功能完善、操作简便的...
**VB物流管理系统设计与实现(论文+源代码)** 本资源提供了一个基于VB语言开发的物流管理系统设计与实现的完整方案。该系统旨在通过信息化手段提高物流企业的管理效率和服务质量。资源内容包括详细的设计文档、源...
**VB门诊管理系统设计(论文+源代码)** 本资源提供了一个基于VB语言开发的门诊管理系统设计与实现的完整方案。该系统旨在通过信息化手段提高门诊管理的效率与质量,为医疗机构提供便捷的操作体验和可靠的数据支持...
附带的源代码注释清晰,结构规范,易于理解和阅读。无论是对于初学者还是有一定经验的开发者来说,都是一个很好的学习案例。通过研读源代码,可以深入了解SSM框架的使用技巧以及人事管理系统的开发流程。 总的来说...
通过该平台,患者可以方便地在线预约挂号、查询报告,医生则可以高效地进行患者信息管理、开具处方等工作,极大地提高了工作效率和患者满意度。 在技术实现上,项目采用了Spring Boot框架,利用其快速构建Web应用的...
通过结合论文和源代码的形式,用户不仅可以理解系统的设计思路、架构和技术细节,还能够直接获取到用于实际开发的源代码,从而极大地提高了学习和应用的效率。 该系统基于ASP.NET技术构建,利用了.NET框架的强大...
该系统旨在简化新生报到的流程,提高学校管理的效率。通过此系统,新生可以快速完成注册、信息录入和缴费等手续,同时学校管理者也能方便地查看和管理学生信息。 论文部分详细介绍了系统的需求分析、设计思路、实现...
“基于SSM框架开发的蜀都天香酒楼网站设计与实现+JSP-毕业论文(附源代码).rar”这一资源包,是一个全面的网站开发项目实例,专注于使用SSM(Spring+SpringMVC+MyBatis)框架结合JSP技术,实现了一个功能完备的酒楼...
**计算机专业毕设:ASP.NET通用作业批改系统设计(论文+源代码)** 本资源为计算机专业毕业生提供了一个完整的毕业设计项目,涵盖了论文和源代码两部分。项目主题为“ASP.NET通用作业批改系统设计”,旨在帮助学生...
该系统旨在帮助学校和教育机构更有效地管理毕业生的信息,从而提高工作效率和数据准确性。 **功能特点:** 1. **用户友好的界面**:采用直观的图形化界面设计,方便用户快速上手。 2. **数据录入与查询**:支持...
通过该系统,餐饮业者可以实现对日常经营活动的信息化管理,从而提高工作效率和服务质量。 **功能特点**: 1. **用户友好的界面**:采用直观的图形化界面设计,方便用户快速上手。 2. **菜品管理**:支持菜品的...
系统用户管理等信息提供存储、更新、查询、统计的功能,使公司能够合理控制进销存各个环节,提高资金的利用率和结算速度,实现管理的高效率、实时性、安全性、科学化、现代化和智能化。 所需开发环境: 开发语言:...
本资源是一个基于VB和SQL的自动点歌系统设计,包含了完整的论文文档和源代码。该系统旨在提供一个用户友好的界面,使KTV、酒吧等娱乐场所能够轻松实现歌曲的自动播放和管理。系统采用VB作为前端开发工具,通过ADO...
通过灵活的数据库设计和直观的用户界面,该系统能够高效地管理课程安排,提高教学管理的效率和质量。 资源内容包括完整的论文文档和源代码。论文详细阐述了系统的需求分析、系统设计、实现技术和测试结果,为开发者...
MyBatis框架则作为持久层框架,简化了数据库操作,提高了开发效率。 JSP技术的运用则使得网站的前端页面动态化、个性化,能够根据用户的需求进行灵活展示。通过JSP标签库和EL表达式的使用,开发者能够轻松实现数据...