请教:如何去分析源码

请教,如何去阅读、分析一份源码,比如说分析Struts的源码,谢谢。

这是很小但是很重要的问题:

在java中分析源码学习源码,已经不是传统意义上的看到源码就分析学习,而是有的放矢,否则浪费时间和精力。

简单地说:框架软件的源码没有必要去分析,例如Struts等,只要了解其大概流程就可以了,因为框架软件保证其应用简易和约束性,会有很多烦琐细碎的代码,这些都妨碍了可读性,打个比喻,框架源码就象JDK源码一样,只要会用,无需去学。

框架应用软件源码应该去读,如何使用框架完成自己的系统。

说到底,还是和大部分程序员向下思维观点所致,有的程序员为表示自己水平高,说struts源码都读懂,我会用很惊讶眼光看他,不是走火入魔就是愚笨的人。

包括学习Spring/Jdon框架这些,都没有必要去读源码,很多热心网友阅读Jdon框架源码,提一些问题,初衷是好的,但是方向错误的。以前一些很有名的高手拿Jdon框架做文章,当时根本没理他,因为他基本专业方向就是错误的,思维向下的,看一个框架好不好,不是看框架源码写得好不好,而是看在多少个不同项目上应用如何,从灵活性 快速性等几个指标来评价。

分析学习源码是学习JavaEE必不可少的阶段,但是必要知道重点和方向,否则才能收到事半功倍的效果,否则花了很长时间和精力,都没有进步。

分析源码最好对比着看,例如struts框架是MVC模式,那么我看看不使用struts框架的源码是怎样(如Jive2/Yazd),然后我再看使用了MVC框架后的源码,有什么不同(如JiveJdon3),这样,对比才领会不同。

还有宠物店,看看SUN的Petstore,和Spring的JPetstore,或Jdon框架的Jpetstore,他们有什么不同,这样,视野开阔,就象买东西,好的坏的都看过,这样才知道掂量分寸。


[该贴被banq于2007年09月02日 09:10修改过]
[该贴被banq于2007年09月02日 09:15修改过]

banq老师
我想问下 孙卫琴 的<精通Struts>一书中 对Struts流程的源码做了介绍 并且说阅读Strtus源码可以增加对框架的了解 从而更好的应用
我感觉你们的观点是不同的
你对此有何感想?

我的想法是,不要看 孙某人 的书。 个人认为,此人出的书在误人子弟。

>阅读Strtus源码可以增加对框架的了解
这其实是个人时间精力问题,还有面向什么人的问题,现在还有很多向下思维的人只有读框架源码后,心里才放心用这个框架,否则,心理不放心或者不服气,这些都是心理层面问题。

我提的是一个能够高效率学习Java的路途(脑筋急转弯,但是不是人人能够转的过来,只要转过来,窗户纸就捅破),但是条条大路通罗马,别人指的路也是可以通罗马的。

学习可以多吸收众家之长。

阅读别人的代码,关键是你要知道你为什么去读,你的目的是什么,你为了解决某个问题,还是为了理解其中的某些内容。

没有目的的去读源码是有作用的,但是事倍功半。

而一旦你知道你的目的了,那么阅读的方法也是不一样。

譬如如果你是需要去验证某一项功能是如何实现的,那么最好结合运行、调试去读代码。而如果你要理解其设计,那么最好是结合编写测试案例的方式去读代码。

总之一句话,找到最佳的路径到达你的目的地。

如果自己想写个框架呢(做个课程设计),看struts源码应该有用吧,但是不知道怎么如手,郁闷哦,还请banq老师给点建议,谢谢

个人认为,先学会怎么使用,然后再思考一下柜架的思想,最后,根据你所理解的思想来模仿柜架来写出自己的东西。
在你实现中自然会暴露出很多问题,然后再去看柜架中是怎么解决的,这样学东西,学得彻底,而且还锻炼了思想!
[该贴被wq8987于2009-02-05 16:13修改过]