平时看源码的时候免不了要深入分析代码,我一般用DIA或者VISIO来画图,增强对代码的认识和理解。
咱这工作算上实习也快三年了,谈谈对这个分析代码的认识。
整体上的代码首先要知道入口在哪里,当然了一般绝大多数就是去找main函数。
然后经过看了好些的代码感觉有两条线非常的重要:
根据先后顺序,一是:函数调用流程;二是:数据流。
比如像u-boot,ffmpeg,glib,gtk,cairo之类的代码,当进行分析的时候,首先我找的是函数的调用流程。感觉理解了这个调用流程,就清晰了代码的逻辑结构关系。毕竟咱不是C++出身的,习惯了C+ASM的顺序思想。如果代码的执行流程在脑子里不清楚,那绝对是一团浆糊。
在此之后,就是数据流了。这个数据因为咱接触OOP的程序少,所以大部分都是结构体,基本木有类。即,是对重要结构体的流程的跟踪,里面成员赋值和变化的情况有所了解。
一般程序都有主线数据结构,就是说这几个变量在代码中扮演了重要角色。因此,搞清楚了这几个变量的流动过程,出生,成长,消亡。有助于理解代码的结构。
都说程序就是数据结构+算法。
函数调用流程可以搞清楚程序设计的思路,当然了还要加上数据的处理流程,数据流不仅完善了设计思路,而且算法是直接处理数据的,因此,数据流也沟通了数据结构和算法。
复杂的数据结构什么链表树图之类的,它们所转移的也就是数据结构。数据乘坐在数据结构中,在算法这个道路上运动,形成数据流。而数据流的代码表现形式则反应为函数的调用过程~。
╮(╯▽╰)╭突然觉得深刻了,O(∩_∩)O~
突然领悟到的,记录一下~。