天天看点

学习开源代码思路(转帖)

神刀网 转载来源:http://www.nhs8.com/post/1380/

在网上搜了很久,没有结果,最后只好自己写了~!

转载保留 神刀网 www.nhs8.com 小弟不才,唯有挤出点墨水!

大家也看到了,很多开源代码不断的被挖掘,很多大型企业也往开源项目抛绳子了,为什么?

因为企业需要发展,开源节流,不仅仅是开源省钱,更因为开源比所带来的效果是:

1.比封闭工程开发更加节省时间 2.相对比较安全 3.有研究价值,比如linux 简单的说了下,我们进入主题吧!

关于怎么学习开源,我梳理一下自己的想法吧!先给个例子,比如我想进入android开发,偶是新手接触!分初中高水平走吧!

1.去国外google或者国内android开发站点找寻该技术的发展趋势新闻,培养点兴趣,这个很重要,因为关乎你耐着头皮看着代码!

2.开始搭建开源环境,直到可以运行程序

3.对于自己的水平,下载一套合乎自己喜欢的程序来看

4.先试着去运行,熟悉各模块,然后看代码,看了一遍,把自己的代码分析注释也标上去,如果哪个模块你觉得很有用,可以试着分离出来,当作自己的类库运行!

5.再读一遍,你已经大致知道该代码的框架,期间涉猎些设计模式的书也行,这时,你要想着,为什么这个程序可以这样写这样运行?而我可以吗?带着这个问题

6.试着去修改源代码,增加新功能,或者调用API,而不是简单的汉化,这时你完全可以把它当作你另外的开源项目来做,比如QQ影音就是这样发展的!如果要改写,你要有“我可以做得比你的代码更好!”去改写。

7.花费了很长时间改写了很多,调试了很多次,bug出现一堆,没关系,编程正常的,出现问题,g和b一下!遇到自己不懂的,赶紧看书资料!

8.到了这步,相信你自己的开源作品也出来了吧!回想一下,你学到什么了?写个开发文档+程序说明总结下自己的开发路程,你会发现,你提升了!

9.这就是学习开源的结果!当然其他做项目或者搭建系统也类似思维!

以下网上转载的http://www.javaeye.com/topic/264490

其实我开始读源码才几天时间,但有点心得,就写出来吧,以期抛砖引玉。

阅读源代码的利弊我不谈,我只说该如何读

首先是积累,当到了一定条件,你会迫不及待的想要去读,因为你想拥有程序的控制权

我把一份陌生的源代码比做一个陌生的城市,你将在里面熟悉道路,

你只要从一个大的标志开始进入(程序入口点)然后你面临很多分支,有的分支很明显的(依靠设计模式,oo,模块化,结构化,解耦,经验判断,当然还有文档,注释,别人的源码分析文章)与其它没有什么瓜葛,或者只有几个联系点,其实是一个模块化功能,就像你知道有一条路通向xx村,你先不管它,知道它通哪里就可以了,以后再专程访问xx村。

一个设计优良的程序肯定是一个个通过乡村高速公路连接的村落,而不该是交杂在一起的钢筋水泥,至不济也该是用围墙围起来的一个个小区。

当你知道并熟悉了城市的主干道之后,整个城市其实已经成竹在胸了

你该学好模式,oo,模块化,结构化,解耦,接口,多态。。。。

广义来说就是oo

如果这些你都很牛的时候,有份源码还让你读不懂,直接ctrl+del

写给初学的人,以让他们少走不成器的我走过的弯路。

补充一条找源码分析文章的技巧

在google中输入关键的源码片段

补充一点经验:

当你读过一些模块之后,看到类似的模块就会下意识的去猜测该模块内部的代码结构,如果你读的够多,实践够丰富,模块就了然于胸了。

比如看到一个方法名,根据方法的字面意思就能猜测出该方法的代码结构,看到类名,就可能会猜测出它该要有什么方法。

这时读代码的速度就快了。

代码是一个有机体,当你具有把一份源代码解构成一个有机体的能力的时候,读代码其实并不痛苦。可是我还没有达到我想像的哪个层次。

http://www.oschina.net/bbs/thread/2246

首先,配置运行起来

其次,试着熟悉实现流程

第三,尝试修改或者增加功能

总结开源项目中使用的架构、设计模式与实现方式。

最难的一点是开发原则的学习抽取。

继续阅读