作为软件研发人员,以后面对最多的恐怕就是代码了。如果没有很强的代码阅读能力,可以说是步步唯艰,很难想象如何能快速从庞杂的代码中理出一个思路来。
这两天帮Jackey分析蓝迪游戏平台的协议,开始看得确实有些晕头转向,看了几个小时也没看出任何门道。不知道从何下手,确实有点儿烦难,心就更急了... ...
后来静下心来,好好想了想,分析了一下:
- 开发语言为C++,是面向对象。
- Library是QT。
- 图形界面的应用程序,当然用的也是”事件驱动“。
对照自己的情况:
- C++语言自己还算熟悉,就是需要一个比较好的代码交叉阅读程序,Linux下面可以用VIM,ctags,global来阅读,不过ctags不支持C++语言,很是郁闷,global和VIM的配合不怎么样,再加上是在Motorola实习,没有Linux系统可用,所以就采用Windows下面的Source Insight吧!虽然是第一次使用,但是很快就算是基本上手了。不过只是前后跳转嘛。Ctrl + "=": 跳转到所在Symbol的实现处;Alt + ","跳转到前一个Symbol。有点不习惯这两个快捷键,更不习惯的是需要用方向键左右移动光标,以前都是用h、j、k、l移动光标的。凑合着用吧!:)
- QT以前看过一点儿,不能算是熟悉。所以Google一下,找点儿资料看了一下,其实主要看其signal和slot、connect和emit的相关内容。
- 事件驱动的程序,一般都是先注册相应的事件回调函数,一切就绪之后,进入事件循环,当事件发生时(比如用户按下了某个button),程序根据事件发生的属主和事件类型,调用相应的回调函数来执行相应的动作。所以可以跟踪一个事件的回调函数,了解其实现。需要特别指出的是Timer,这是个比较特殊的对象,当进入事件循环之后,Timer对象就会周期性的调用相应的回调函数(当然Timer也可以只运行一次,或者指定的次数后停止),这也是一个切入点。
想好了对策之后,接下来的路就非常顺利了。所以不管遇到什么事情,都需要冷静,不要盲目,全面的分析完情况后再下手,能避免走很多弯路!
阅读(1888) | 评论(4) | 转发(0) |