这段时间源代码阅读得比较多,总结下自己得源代码阅读方式
获取代码
- clone code
git clone https:// - 本地新开分支
git checkout -b branch_for_read_code
方便写注释,而且还能快速的总结自己的阅读经验
目录结构
了解目录结构,项目代码的目录结构是什么样的,最外层文件夹都是什么功能;
比如:
- 常见的app文件夹一般是应用的控制器、模型(mvc中的m、v层)等;
- index一般是入口
项目入口
- 技术栈?
什么语言
什么数据库
什么存储系统
读写分离(主库读?从库读?)? - 如何启动,入口在哪,配置文件在哪?路由如何转发?
一般看到启动脚本或者入口时,就能知道路由规则了,启动的前提是项目初始化完成,然后会加载一些资源到内存中。这时会设计路由,然后可以将这里的路由进行解读,后续阅读以此路由规则为蓝本就能轻松的理解了。
每个文件夹
- 每个文件的代码的主要功能
- 每个文件夹的作用
文件夹的作用应该是你在阅读或者大致浏览完整个文件夹下的文件的内容后,脑子中记下的东西的总结,最重要的是区分不同。可能两个或者多个文件夹里都是配置文件,但是它们的不同点是什么,特别是有的配置的是mysql,有些配置redis、memcache,注意区分。 - 理清思路,路由在文件间的转发和请求处理
结合前面的,项目初始化时看到的路由,归并下,很少有项目里有多个路由规则,遇到不同的路由规则需要记录下来,因为它们之间交替进行时十有八九是有坑的。
摸索
在完成前面的工作后,如果你还能记住东西的话,从整体而言这个项目的设计和架构你已经清楚了。现在缺的是细节,说白了就是代码怎么写的,代码实现里有没有bug?!!
我想这个时候脑子最多出现的是吐槽“代码规范”。
所以:
- 动手做一个
不管是对原有的代码模块的一个重构还是优化,自己动手改改,一来解气,而来也是掌握代码细节;比如新增、删除、修改功能时就能明确具体的项目代码实现了,然后you get it。
当然这个阶段是一个比较长时间的工作,慢慢来。
最后
有了前面的了解(除了摸索阶段)其实已经足够了,因为在大多数场景下是不用考虑代码具体是怎么实现的,代码是实现功能的工具!!!