如何更好的读懂复杂程序代码

1)平静下心,准备好本子,和一支笔;

2)找到你需要读懂哪几个项目,或者清晰你要搞懂一个什么业务;

3)不要深入复杂方法内部,迷失目标;

4)不要怀疑代码有错误,即使有错误,先认为是正确的,先大概理清业务流程;

5)你开始了,你先把握住项目的大概构架;

第二阶段

1)忽略掉与业务不是紧密关联性的代码,如:日志记录,短信发送,消息通知等不影响主要业务的代码;

2)相信直觉,思考作者的目的,认同作者的代码,关注要点,思考直观思维上的处理方法;

3)即使原作者代码中没有“块”,也要想办法把代码,分块看,然后看“块”,是怎么往下流的;

第三阶段

1)在本子上记录下主干,不要迷失目标,不要走岔路;

2)找到程序入口,进行方法级调试,不要深入方法内部;
3)绘制下主要的,调用关系,备注上业务关系;

……………………

以上为,阅读整个项目式,提纲性原则,为个人经验总结。

欢迎批评指正,相互进步!

如果你要解决的是细节型问题,深入原理型问题。请参考这篇文章:

[置顶] 牛人教你如何阅读源码

时间: 2024-08-26 05:30:56

如何更好的读懂复杂程序代码的相关文章

如何阅读他人的程序代码

近日,在互联网上游荡,偶然发现一篇曾经的文章,是关于如何阅读他人程序代码的,阅后颇为受益,于是乎重新整理了一下格式,将此文转载如下: 如何阅读他人的程序代码 文/王建兴   作者简介: 王建兴,清华大学资讯工程系的博士研究生,研究兴趣包括计算机网络.点对点网络.分布式网络管理.以及行动式代理人,专长则是Internet应用系统的开发.曾参与过的开发项目性质十分广泛而且不同,从ERP.PC Game到P2P网络电话都在他的涉猎范围之内. 一.读懂程序代码,使心法皆为我所用 程序代码是别人写的,只有

如何快速读懂大型C++程序代码

要搞清楚别人的代码,首先,你要了解代码涉及的领域知识,这是最重要的,不懂领域知识,只看代码本身,不可能搞的明白.其次,你得找各种文档:需求文档(要做什么),设计文档(怎么做的),先搞清楚你即将要阅读是什么玩意,至少要把代码的整体结构搞清楚:整体架构如何,有几个模块,模块间通信方式,运行环境,构建工具等等.最后,如果不是全部的代码都归你管,重点关注将会属于你的模块,其他代码了解下即可. (2012-06-14 11:25:03) 标签: c编程 分类: C 学习 六个章节:( 1 )读懂程序码,使

读懂IL代码就这么简单(一)

一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉厉. 然后开始接触IL,了解了一段时后才发现原来读懂IL代码并不难.进入正题   1.1  什么是IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直

如何读懂c++源码?

六个章节: ( 1 )读懂程序码,使心法皆为我所用.( 2 )摸清架构,便可轻松掌握全貌.( 3 )优质工具在手,读懂程序非难事.( 4 )望文生义,进而推敲组件的作用.( 5 )找到程序入口,再由上而下抽丝剥茧.( 6 )阅读的乐趣,透过程序码认识作者. 阅读他人的程序码( 1 ) ---读懂程序码,使心法皆为我所用程序码是别人写的,只有原作者才真的了解程序码的用途及涵义.许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序码.但是,与其抗拒接收别人的程序码,不如彻底了解相关的

诸葛IO-从更精细化的角度读懂用户

在37degree的小伙伴们共同努力下,诸葛IO精细化运营分析工具于2015年02月13日正式和大家见面了! 虽然大家眼前已经呈现了一些统计分析工具,但我们坚信,在移动数据分析领域,诸葛IO分析工具的出现将是一次重要的转变.诸葛IO-会让您从更精细化的角度读懂您的用户. 更深入的用户行为洞察 诸葛IO的"用户档案"功能提供了完整的用户账号信息与访问历史记录.可以让运营者更深入的了解每个用户的使用详情.预测用户的潜在价值与流失风险,在运营产品与策划活动时获得更有力的数据支撑. 因为诸葛I

读别人,更要读懂自己

每个人都是一本书,而父母就是我们的出版社,生日是我们的出版时间,身份证是我们的书号.我们都是历经长达10个月的制版.装订,才终于面世.封面是父母给的,我们不能改变,我们要做的就是尽力写好里面的内容.或许开始写的令自己或别人不太满意,但这没关系,只要我们尽力了,就无怨无悔,别做盗版书. 有的书装帧不是很华丽,放在哪里也不是很抢眼,但你读后越读越有味道,越读越耐读,他给你激情给你力量.有的书虽然有着考究的包装,也不乏华丽的词藻,但你读起来却云山雾罩.无所适从,让你辩不清南北,不仅浪费你时间,还会引你

为什么计算机能读懂 1 和 0 ?

问题:为什么计算机能读懂 1 和 0 ? 从小到大,我们被告知的都是,计算机只能读懂1和0,但我好奇的是为什么计算机它就能够读懂1和0呢,它是怎么读懂的?读懂后,又是怎样进行工作的呢?嗯...我想问的就是,最最基本原始的那个工作原理 回答: 萧井陌,私信问题不回,请提问邀请 玉来了 既然是问最最原始的那个工作原理... 从小到大,我们被告知的都是,计算机只能读懂1和0,但我好奇的是为什么计算机它就能够读懂1和0呢,它是怎么读懂的?读懂后,又是怎样进行工作的呢?嗯...我想问的就是,最最基本原始的

嵌入式系统 Boot Loader 技术内幕----仅此一篇读懂bootloader

嵌入式系统 Boot Loader 技术内幕----仅此一篇读懂bootloader 本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念.软件设计的主要任务以及结构框架等内容. 1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分. 2. Li

写让别人能读懂的代码

随着软件行业的不断发展,历史遗留的程序越来越多,代码的维护成本越来越大,甚至大于开发成本.而新功能的开发又常常依赖于旧代码,阅读旧代码所花费的时间几乎要大于写新功能的代码. 我前几天看了一本书,书中有这么一句话: “复杂的代码往往都是新手所写,只有经验老道的高手才能写出简单,富有表现力的代码” 此话虽然说的有点夸张,可是也说明了经验的重要性. 我们所写的代码除了让机器执行外,还需要别人来阅读.所以我们要: 写让别人能读懂的代码 写可扩展的代码 写可测试的代码(代码应该具备可测试性,对没有可测试性