1.lua语言短小,而且是我目前开发用到的语言之一,我会把它作为长期阅读的一个开源代码之一
2.读完并不代表很牛了,只是把自己的一些弱点给弥补得不是那么明显
3.格式上会大概如下:
1)引用一段代码时,会把大意通过注释标识出来,如果遇到具体的函数调用会通过1.x表示在后面标记段
2)有时候一遍下来,会有选择性的通读,很可能以后会回过头再次阅读,会加个时间戳表示更新
3)根据2)的读法是,不从细节的算法出推导逻辑,而是先认识这个东西是干吗的,再去推导其中的细节。否则会迷失在无尽的细节中
4)前几篇中,我会把每个函数背后所对应的c文件名列举出来,通过观察这些文件的层次,学习lua优秀的模块划分,和对lua全局上的认识
4.阅读源码上,我的一些体会,大概分这几个步骤
1)一个好的库会很清晰分这么几个层次,外部API,内部API,自定义的数据格式和解析,核心的数据结构,核心的几个模块,以及工作流程
2)因此阅读上可以这样,通过跟调一些外部API的实现,来了解这个库的一个工作方式
3)熟悉这个库的 数据结构,和常用的数据解析宏或者函数
4)可以尝试分析一些内部API的实现(多为实现外部API的函数), 3),4)可以多次迭代
5)这个时候是跟调这个库的工作流程。
6)以库工作流程为例,如果是lvm的虚拟机,那就要先了解它的一些状态文件,栈的操作方式,
7)如果6)用到一些核心的数据结构,则回头再看这些数据结构,然后再从5)开始迭代
总结一下,即先了解一个东西暴露出来的api,从这些上层api上去大致揣摩库的工作方式,然后熟悉"通行证"(数据结构,常用的宏),然后继续下一层的探索,有时候需要两个层次的结合来看,不但迭代的这么个过程。其中很重要的一个是,怎么去领会一个库的思考方式和组织关系,有了这个大背景的存在,就不会迷失在看似繁多的代码文件里。
5.环境上的准备
lua版本是(根据lua.h的宏)
#define LUA_VERSION "Lua 5.1"
#define LUA_RELEASE "Lua 5.1.4"
编译器是vs2008, win7版本
把源码都加进vs工程,删掉一些提示重复main的文件,保证代码上的可跟调性