论坛首页 Java企业应用论坛

Java源码阅读的真实体会

浏览 84507 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-08-23  
好好学习,天天向上
0 请登录后投票
   发表时间:2011-08-23  
lz大牛啊,膜拜一下...
0 请登录后投票
   发表时间:2011-08-23  
借这个贴子我也谈下自己阅读源代码的体会:

对于阅读源代码一直存在着一些声音:
1.阅读源代码的神化论,
2.阅读源代码的无用论,
3.阅读源代码的恐慌、迷茫论,


对于第一种情况,可能的原因以围观者心理居多,如果是这种情况的话,不妨花点时间、精力,静下心来也许就能找到些有趣的事情。
对于第二种情况,可能的原因a:比较忙没时间读,毕竟读代码需要花费时间、精力,但这个又不能直接产出,学招式学完之后就可以马上使用,学心法只有在理解之后并有效使用才能有效果,面对对手读心法口决是没用的。
    可能的原因b:到了神马都是浮云价段,例如Martin Fowler、Rod 这一类人,这类人更多的是被读,而不是去读别人的代码,
    可能的原因c:条条大路通罗马,阅读源代码只是学习方式的一种,还有其它的学习方式, 不过有一点要注意的就是不能因为一种方式是有用的而说其它方式是无用的。

对于第三种情况,可能的原因就是在读源代码的过程中出现的情况,这个至少对于我是适合的,这个也应该是某些人的阶段性特征,渡过之后感觉就会轻松一些。


楼主对不同类型的代码阅读给出了自己的感受,
包括阅读源代码之前的准备工作,
阅读过程中需要注意的问题,
阅读之后可以得到那些收获,
充分说明楼主是一个无私的人.

我自己也读过一些源代码,下面是我自己的体会:
阅读源代码的目的,向良好代码学习经验,向不良代码学习教训。
最终我们能够理解怎么做能够得到如下特征的设计:
可扩展性,可重用性,可维护性,依赖性,内聚性,耦合性,清晰性,简洁性,可读性,可修改性,抽象性,封装性,模块化,层次化,测试性,还有其它特性。
如何去避免一个设计是:
僵化性,脆弱性,沾滞性,牢固性,不必要的重复,不必要的复杂,晦涩性。

阅读面向对象设计源代码的通用前提条件:
A:对面向对象基本概念的掌握:接口,抽象类,具体类,对象之间的关系--依赖、关联、组合、复合、继承,
接口、抽象类、具体类之间的讨论,可以去深入理解编程到接口这一概念,
继承与组合之间的讨论这个可以深入理解首选组合复用这一概念。
B:面向对象的基本设计原则的了解:
单一职责,开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,组合复用原则,迪米特法则,
重用发布原则,共同重用原则,共同封闭原则;无环依赖原则,稳定依赖原则,稳定抽象原则,
C:模式的了解,包括基本的设计模式(GOF23),架构模式(企业应用架构模式列表),等其它的模式。
事实上这个前提条件列表与源代码的学习与自身编程实践之间是迭代的过程。

这个前提条件列表都是些理论,如果只通过自身的直接经验、教训就能掌握这些概念,也是完全OK的。

这里我所提到的代码风格是很片面的,仅是Java语言,仅是面向对象设计,
如楼主所提到的Lisp的函数式风格,对我来说绝不亚于地球与火星的差别,
应该说不同的语言、不同的设计过程风格都有自己实现良好程序特征的方式。

了解是一回事,
全面了解是一回事,
掌握是一回事,
精通是一回事。

0 请登录后投票
   发表时间:2011-08-23  
很不错,看下去了
0 请登录后投票
   发表时间:2011-08-23  
确实,需要耐心和极大的求知欲。向LZ学习,向LZ致敬!
0 请登录后投票
   发表时间:2011-08-25  
我才上大二,用能力看吗?主要是说技术基础。
0 请登录后投票
   发表时间:2011-08-25  
楼主很厉害
0 请登录后投票
   发表时间:2011-08-25  
wjp2072 写道
我才上大二,用能力看吗?主要是说技术基础。

正是好时机,如果有兴趣,到大四,已经比一般应届生强太多了。好的开源项目可以教会你写优秀的代码,同时还可以学习项目管理,版本控制软件。
0 请登录后投票
   发表时间:2011-08-26  
我也要做牛人
0 请登录后投票
   发表时间:2011-10-16   最后修改:2011-10-16
zwchen 写道
107192468a 写道
zwchen 写道
SqlEye 写道
Sun公司有下载的,不过很隐秘。我曾经为自己找到、读过它很兴奋了一阵。  还有吗?给我一份.

我是JDK1.5版的,zip包有50多M,你先自己找找吧,没找到就站内联系,我QQ给你。

也请给我一份吧,找过了,也许是能力不强,没找到

站内信告诉我QQ哦。


就是这玩意:http://luoyahu.iteye.com/blog/382084
源码里面的readme:http://java.sun.com/j2se/1.5.0/scsl/build.html
白皮书:http://java.sun.com/products/hotspot/docs/whitepaper/Java_HotSpot_WP_Final_4_30_01.html

也可以下载这个:http://download.java.net/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zip



0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics