庄表伟提供了以下9个建议:
1.在下载源代码之后,首先要跑起来,编译通过、正常运行;
2.在你觉得最有可能运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点;
3.从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来;
4.随便改点代码,看看会不会报错,如果报错,会从哪里报错;
5.试着把报错屏蔽、修复、或者绕开;
6.尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?
7.从实际需要出发,修改这个项目,满足自己的某一个小的需求。(注意在此之前,尽量不要在网络上找答案);
8.看看相关的讨论与心得,是否与自己的理解相一致;
9.提交bug fix或者某个新的功能代码。
在学习开源的过程中,有几个方面会获得大量收获,1.架构与模式;2.开源社区常见的一些惯用法;3.相关领域的结构与算法。
1. 画出整个程序的流程图,理解整个程序流程的思想。画流程图的方式更让人很直接 的理解程序的整体流程,而不会被代码所干扰,让程序员总体上把握整个程序。
2. 对流程各节点(函数或过程)的理解。流程的每一节点是构成整个流程的不可缺少的部份。
3. 再把流程和流程各节点串起来理解整个程序,可能的话最好写出读书笔记。
4. 如果想深刻的学习到源代码的精髓所在,请写一个相近的程序进行操练。当你理解了这个程序并不表明你掌握了这个程序,只有在你操练一个相近的程序时,你才知道你到底理解了多少,掌握了多少。
其实源代码的学习这是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本原的过程。
很多程序员(包括我自己)在相当长的时间内,过份注重程序代码的细节部份,而忽略了程序的有机整体,这不能不说是一种悲哀。
特别是软件大工业时代的现在,由于项目的庞大,整个项目被人为的分割成七零八落的几个独立小块 (这就更须要有人对整个项目的统领),程序员在这几个小块中各自为战,堕落自己的思维,限制在狭小的空间中还自得其乐。整个一井底之蛙。
但是我们也要看到,现在有越来越多的程序员潜意识里明白了这个缺陷,正在不断的改进。
其实我真正想说的是,大凡世事纷繁复杂,但道理却殊途同归,这才是万法归一的理解。
2. 对流程各节点(函数或过程)的理解。流程的每一节点是构成整个流程的不可缺少的部份。
3. 再把流程和流程各节点串起来理解整个程序,可能的话最好写出读书笔记。
4. 如果想深刻的学习到源代码的精髓所在,请写一个相近的程序进行操练。当你理解了这个程序并不表明你掌握了这个程序,只有在你操练一个相近的程序时,你才知道你到底理解了多少,掌握了多少。
其实源代码的学习这是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本原的过程。
很多程序员(包括我自己)在相当长的时间内,过份注重程序代码的细节部份,而忽略了程序的有机整体,这不能不说是一种悲哀。
特别是软件大工业时代的现在,由于项目的庞大,整个项目被人为的分割成七零八落的几个独立小块 (这就更须要有人对整个项目的统领),程序员在这几个小块中各自为战,堕落自己的思维,限制在狭小的空间中还自得其乐。整个一井底之蛙。
但是我们也要看到,现在有越来越多的程序员潜意识里明白了这个缺陷,正在不断的改进。
其实我真正想说的是,大凡世事纷繁复杂,但道理却殊途同归,这才是万法归一的理解。
我喜欢一无所有,这样就只能一步一步的创造世界...

浙公网安备 33010602011771号