学习编程最好的方式就是读源码,但读源码不是一件容易的事情,基本算是一个解构然后再重构的过程。
传统的阅读方式是线性的,小说、甚至论文等,都是为了阅读和印刷,而用的是线性的方式,从上往下顺序阅读就可以了,有一定的主线。
但程序的阅读,由于程序执行的动态性,基本不可能按线性阅读的方式来进行。不同的人可能发展出各种适合自己特点的阅读方法
,但本质上都是通过阅读和理解,还原出程序设计者的设计结构与思路。而也只有还原或者说重构出来了程序设计者的原有设计,才算达成真正的完成理解。
如何还原和重构设计者的结构和思路,就是程序阅读
笔记工具的核心了,简单来看,工具需要如下一些能力:
- 静态结构表达。可以表达程序的设计结构。
- 动态结构表达。可以展现程序运行的动态状态和逻辑
- 还需要有非常灵活的呈现思路和笔记的功能。可以分线性笔记工具和白板类笔记工具。
- 程序化制图功能。通常比如对UML语法制图/Graphviz语法制图等脚本制图功能的支持。
1 静态结构表达。
程序的静态结构,通常是程序设计者的原有起点,也是程序的施工图纸,这类结构通常是,类图、数据库实体关系图
、数据结构、组件图、系统架构、