关于源码学习

banq老师我看了你关于阅读框架源码的帖子,你说阅读类似底层实现的源码是没有必要的,只要大致了解其原理就可以,阅读源码是一种向下思维,而我们应该培养的,是一种向上的思维,OO的思想,我也看了您很久以前(2002年左右)的帖子,那时候好像您也是对于struts的源码等还是有一些研读的,banq老师您是通过这些年的经验悟出来的要向上思维的思想的么?但是我觉得在国内的公司,很多时候,别人给你搭好了架子,你能自己发挥oo思想的余地很少,更重要的可能是让你把设计好的需求实现就好,对这个我们国内绝大部分程序员所处的状况和您所说的向上思维之间的矛盾,您有什么看法么?我现在的工作好像就处在这么一个迷茫期,希望banq老师或者其他的过来的老师能教授一下经验,谢谢

向上的思维 就是拿来主义 起于巨人肩膀,Java是组件世界,组件大家互相使用,就象盖个房子,你不会为得到砖头和水泥而开办砖头厂和水泥厂一样。

>好像您也是对于Struts的源码等还是有一些研读的
在使用过程中,对于框架使用不是很明白,就要看说明书,如果没有说明书,就只能看源码了,就像裝锁,如果锁说明书有就更好,如果不详细,那只能先拆了看原理;对于框架组件也是这样,先看API接口和相关文档案例,就可以上手了,深入时,有时可以看看源码。

>别人给你搭好了架子,你能自己发挥OO思想的余地很少
OO主要是体现在业务,如果进行需求oo建模,这是架构替代不了的,再好的框架也不能替你分析你的业务,那是神话。

培养向上思维就需要从学习设计模式开始,多使用各种框架,使用多了就掌握使用之道,否则就像有的初学者惊呼:java这么多框架,要学学一辈子啊。这是没有掌握正确的学习方法,或者掌握了错误的学习方法,所以,学习Java之初,不要乱看什么视频教程,误入歧途,以后改起来就麻烦了,现在正统的软件教育有些还误人子弟了,更不要说各种所谓培训了。只有从OO入手的培训才能学习。

补充一些我自己的看法,欢迎大家指正。
所谓OO,重点在于业务OO,语言级别的OO其次,虽然OO的本意是现实的抽象,然而使用中有大部分是和自己关心的业务无关的对象,例如Hibernate的session对象,这种东西属于支持对象,不需要重点理解,看示例怎么用的就怎么用,而业务对象是要重点理解、精化的东西,并且随着对领域理解的深入,可能抽象出一个和当初字面意义完全不同的更稳定更有用的对象。

呵呵,框架是别人设计的好的,至于OO还是不OO,那是设计框架人的事,而你在框架的架构下来完成你的系统,那么OO就应该体现在你自己的领域模型里了。而你学的设计模式,设计原则,以及DDD就可以派上用场了。