`
eric_weitm
  • 浏览: 235927 次
  • 性别: 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月
分享到:
评论

相关推荐

    编写可读代码的艺术.ppt

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

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

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

    51单片机读U盘技术总结

    51单片机读U盘技术总结,总结51单片机读优盘的原理,附有全部源代码

    编写可读代码的艺术

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

    编写可读代码的艺术-完整版

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

    编写可读代码的艺术-完整版(带书签)

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

    猛犸代码生成器 方便生成C#\VC++代码

    它总结关系数据库操作的一些共性,根据面向对象的思想和分层架构设计,将大量代码按照预先设置的模板上自动生成出来。软件界面简洁,操作方便,生成的代码规范、注释完整,易读易改,目前已有部分C#和一个VC++模板,...

    《重构 改善既有代码的设计》之代码的坏味道

    附件是在读完《重构 改善既有代码的设计》之后,为代码的坏味道所撰写的总结文档。

    javascript 注释代码的几种方法总结

    为了程序/代码的易读性,基本上每一种编程语言都有注释的功能,javascript也不例外,javascript注释代码有多种形式,本文章向大家介绍javascript注释代码的两种方法,需要的朋友可以参考一下

    Java开发手册-代码规范

    《Java开发手册-代码规范》是一本旨在帮助Java开发者提高代码质量和可维护性的指南。该手册由阿里巴巴集团编写...通过遵循《Java开发手册-代码规范》,开发者可以编写出结构清晰、易读易懂、易于维护的高质量Java代码。

    发一个代码生成工具猛犸代码助手可生成C#\VC++代码

    它总结关系数据库操作的一些共性,根据面向对象的思想和分层架构设计,将大量代码按照预先设置的模板上自动生成出来。软件界面简洁,操作方便,生成的代码规范、注释完整,易读易改,目前已有部分C#和一个VC++模板,...

    OpenCV 表盘指针自动读数的示例代码

    前段时间参加了一个表盘指针读数的比赛,今天来总结一下 数据集一共有一千张图片: 方法一:径向灰度求和 基本原理: 将图像以表盘圆心转换成极坐标,然后通过矩阵按行求和找到二值图最大值即为指针尖端 导入需要...

    如何去看懂一段代码.md

    因为当你知道了代码的执行流程,也知道了每个语句的功能,还是不能非常具体的去读懂这个代码整体的表达,这时候你就需要去把数字代进去,亲自去走一遍代码流程。用自己的思维去理解计算机的思维。

    猛犸代码生成器 方便生成C#\VC++代码(2012-10-4更新)

    它总结关系数据库操作的一些共性,根据面向对象的思想和分层架构设计,将大量代码按照预先设置的模板上自动生 成出来。软件界面简洁,操作方便,生成的代码规范、注释完整,易读易改。 开发环境:window 7,vs2010 ...

    POI操作Excel常用方法总结.docx

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取...

    猛犸代码助手V3.6

    它总结关系数据库操作的一些共性,根据面向对象的思想和分层架构设计,将大量代码按照预先设置的模板上自动生成出来。 使用XML+XSL技术,利用模板插件机制,根据不同的项目模板可以生成ASP、PHP、C#、JAVA、...

    简单文件系统报告书(内含代码、总结等)

    为LINUX 设计一个简单的二级文件系统 要求做到以下几点: (1)可以实现下列几条命令(至少4条)...Read 读文件 Write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度。 (3)源文件可以进行读写保护。

Global site tag (gtag.js) - Google Analytics