看了几天的源码,进度很慢,过于关注代码实现的细节了,反而很难看清整体结构。于是问诸google寻找方法。大体上分析源代码都要经历三遍过程,第一遍是浏览,通过阅读源码的文档和注释,阅读接口,先弄清楚每个模块是干什么的而不关心它是怎么做的,画出架构草图;第二遍是精读,根据架构草图把系统分为小部分,每个部分从源码实现自底向上的阅读,更深入细致的理解每个模块的实现方式以及与模块外部的接口方式等,弄明白模块是怎么做的,为什么这样做,有没有更好的方式,自己会如何实现等等问题;第三遍是总结回顾,完善架构图,把架构图中那些模糊的或者空着的模块重新补充完善,把一些可复用的实现放入自己的代码库中。
现在是浏览阶段,并不适合过早涉及代码的实现细节,要借助nginx的文档理解其整体架构和模块划分。经过几年的发展,nginx现在的文档已经是很丰富了,nginx的英文wiki上包含了各个模块的详细文档,faq也涵盖了很丰富的论题,利用这些文档足以建立nginx的架构草图。所以浏览阶段主要的工作就是阅读文档和画架构草图了。
对于源码分析,工具是相当关键的。这几天阅读源码的过程,熟悉了三个杀手级的工具:scrapbook离线文件管理小程序、graphviz图形生成工具、leo-editor文学编程理念的编辑器。
scrapbook是firefox下一款轻量高效的离线文件管理扩展程序,利用scrapbook把nginx的wiki站点镜像到本地只需要几分钟而已,管理也相当简单,和书签类似。
graphviz是通过编程画图的工具集合,用程序把图形的逻辑和表现表示出来,然后通过命令行执行适当的命令就可以解析生成图形。
leo-editor与其说是一个工具平台,不如说是一套理念。和其他编辑器ide不同的是,leo关注的是文章内容的内在逻辑和段落层次,文章的表现形式和格式是次要的。用leo的过程,其实就是在编程,虽然刚开始有些不适应,但习惯之后确实很爽,杀手级的体验感,很听话。
btw,充实的8天长假结束了,总结一下,这个假期没有出去玩,做了三件事情,第一件事情是基本完成了房子的装修,墙面、地板、家具,都是亲力亲为的成果,虽然没有节省多少开支,却增添了动手的乐趣;第二件事情是溜冰,体会了平衡的力量;第三件事情是练习画画,锻炼了观察与概括的能力。
nginx源码分析(4)-方法(1)
最新推荐文章于 2020-05-03 20:54:58 发布