`
eric_weitm
  • 浏览: 242865 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读代码的方法总结

阅读更多
最近的代码阅读量比较多,有必要对代码阅读的方法进行整理。由于各种语言的差异,以下我会分别总结C、C++和java的代码阅读方法。


C工程
应用服务器或者对性能要求较高的工程会用纯C来写,这种工程是不太好读的。要读这种代码首先需要了解相应的基本概念,其次是一些核心的数据结构和功能模块,再次如果能找到相应的逻辑架构图(因为不涉及实现的细节还是比较容易找到的)会对理解代码有重要的帮助。C的工程大多数会写make文件,有时通过make文件可以帮助我们找到模块之间的依赖关系。最重要的是要理解系统的组织形式,典型的形式是利用函数指针来分割和挂载模块。apache的web服务器软件httpd便是用纯C实现的,其对于配置文件的处理、动态加载的实现、分阶段分模块建立handler的机制、跨平台的抽象都值得很好的去借鉴。



C++工程
如果是VC的工程那就很幸福了,找到main函数,打断点,看启动的过程和响应的处理、这样就可以很快的捋清楚系统的脉络和组织形式了。再有,windows下的经典的基于消息的编程模式要求阅读者要有动态、异步的思维方式,有时候搞清楚系统启动后的动态行为(线程模型)可能更重要。由于C++有oo的性质,设计的比较好的代码其头文件便是概要的设计,通过头文件便可比较快的找到类之间的依赖和层次关系。头脑中形成了类之间的关系之后再去读代码就容易多了。OGRE的代码同样是很庞大的,但是如果理解了基本的3D图形学的概念,知道了Root SceneManager node camera等之间的关系,熟悉了帧刷新的回调机制,去理解代码还是比较快的。



JAVA工程
java语言上手比较容易,但是java的工程却是最难读的。一般java的工程都比较注意扩展性和可配置、可管理性,OO的模型设计的比较好,各个模块之间讲究的是松耦合(如利用接口编程、利用Digest来初始化、google的动态注入等),这种方式使得我们读代码也不能用传统的方式。比较好的办法是将代码导入eclipse,利用其层次结构视图(hierarchy)查看基础接口(一般是在较外层的包里面)的实现层次,之后在系统初始化的地方打断点,在debug视图中要重点看调用栈和线程模型,有时候看初始化的过程比看响应的过程还要痛苦,因为初始化的过程就是组装对象、构建系统的过程。经过这个过程,我们基本上就可以弄清楚系统在跑起来之后是哪些对象在运行,以及对象之间的关系了。Tomcat的源代码设计的很好,短的包名里面都是接口(概要设计),针对每个方面分别有具体的实现包,其整个系统的初始化是利用的Digest机制,这种方式值得借鉴。(现在的很多框架好像是用的反射机制,最新的应该是google的GUICE吧!)



总结:尽管语言特性不同,分析的方式也不同,但是共通的一点是 从粗到细、从架构到细节、从编程模式到内部的参数。

本文写于2011年3月
分享到:
评论

相关推荐

    PCF8591模块代码方法总结

    PCF8591 模块代码方法总结 PCF8591 模块是单片机领域中常用的模拟-数字转换器(ADC)和数字-模拟转换器(DAC),它可以将模拟信号转换为数字信号或将数字信号转换为模拟信号。下面是 PCF8591 模块代码方法的总结: ...

    DS1302模块代码方法总结

    标题“DS1302模块代码方法总结”指的是在单片机编程中,与DS1302实时时钟芯片相关的编程技术。DS1302是一款常用的串行实时钟,广泛应用于各种嵌入式系统中,以提供精确的时间戳功能。在蓝桥杯等竞赛或项目开发中,...

    EEPROM的模块代码方法总结

    Eeprom 模块代码方法总结 Eeprom(Electrically Erasable Programmable Read-Only Memory),即电可擦除编程只读存储器,是一种非易失性存储器,可以在系统工作时通过电信号擦除和编程。下面对 Eeprom 模块代码方法...

    如何让代码更可读-读《编写可读代码的艺术》读书笔记.pdf

    《编写可读代码的艺术》是一本致力于提升代码可读性的书籍,强调了代码可读性在软件工程中的重要性。代码可读性不仅关乎程序员之间的沟通效率,还直接影响到软件的维护成本。以下是对书中一些核心观点的提炼: 1. *...

    python将excel转换为csv的代码方法总结

    ### Python将Excel转换为CSV的方法总结 #### 一、引言 在数据分析和处理工作中,经常需要将Excel文件转换为CSV格式,以便更好地利用Python进行数据处理和分析。本文将详细介绍两种常用的方法来实现这一转换过程,并...

    编写可读代码的艺术.ppt

    编写可读代码的艺术的总结,希望能对想要写出清晰代码的程序员起到帮助作用。

    数值方法 Matlab代码

    总结来说,"数值方法 Matlab代码"是学习和实践数值方法的重要资源。通过分析和运行这些代码,不仅可以巩固理论知识,还可以提升Matlab编程技能,为将来解决实际工程问题打下坚实基础。无论你是数学、工程还是物理...

    编写可读代码的艺术(完整版包括13章内容).ppt

    编写可读代码的艺术的总结,质优量多,希望大家喜欢。

    教你如何读懂源代码.zip

    总结来说,“教你如何读懂源代码.zip”这份资料可能涵盖了编程基础、代码结构、调试技巧、数据结构与算法、版本控制和设计模式等多个方面。通过学习和实践,你将能够更有效地解析和理解各种源代码,提升自己的编程...

    编写可读代码的艺术

    《O’Reilly精品图书系列:编写可读代码的艺术》关注编码的细节,总结了很多提高代码可读性的小技巧,看似都微不足道,但是对于整个软件系统的开发而言,它们与宏观的架构决策、设计思想、指导原则同样重要。...

    代码整洁之道读书分享.zip

    这本书强调了代码质量的重要性,尤其是整洁、可读和易于维护的代码对于项目成功的关键作用。在“逐步改进”和“JUnit内幕”这两章中,作者深入探讨了如何通过一系列实践步骤来提升代码质量,并介绍了单元测试的重要...

    数学建模各种代码总结

    Python因其丰富的库和易读性而广受欢迎,Matlab则以其强大的数值计算能力见长,R擅长统计分析,而Julia则是近年来新兴的科学计算语言,执行速度较快。 2. **数据处理**: 数据是建模的基础,代码需要能处理数据...

    读懂IL代码.docx

    总结来说,理解和掌握IL代码能够增强.NET开发者对程序运行时行为的洞察力,对于优化和调试代码以及深入理解.NET框架具有重要意义。通过学习IL,开发者能够更好地控制和利用.NET平台的特性,提升软件开发的专业水平。

    前端代码规范总结(3篇).zip

    本文将深入探讨HTML、CSS和JavaScript这三种主要前端技术的代码规范,旨在提供一套综合的指导原则,帮助开发者编写更可读、可维护和可扩展的代码。 首先,我们来谈谈HTML规范。HTML作为网页的基础结构语言,其规范...

    华为代码规范代码模板

    总结来说,华为代码规范和模板旨在提升代码质量和开发效率,通过自动加载类注释、代码格式化和命名规则等,帮助开发者写出高质量、易读、易维护的代码。通过集成这些规范到开发流程中,团队能够更好地协同工作,共同...

    读书笔记:数据结构与算法之美学习总结以及代码.zip

    读书笔记:数据结构与算法之美学习总结以及代码

    读懂linux内核源代码

    《读懂Linux内核源代码》这本书旨在为初学者提供一条清晰的学习路径,并为Android开发人员提供宝贵的知识资源。本文将深入探讨Linux内核开发的重要性、学习方法以及如何有效地分析Linux内核源代码。 #### 二、Linux...

    [HTML] Prettify 代码高亮使用总结 实例代码

    HTML中的Prettify是一款强大的代码高亮工具,尤其在网页中展示源代码时,它可以将代码格式化并突出显示关键部分,使得代码更易读、更美观。Prettify是Google开发的一个开源项目,它支持多种编程语言的语法高亮,并且...

Global site tag (gtag.js) - Google Analytics