来源
异步
文末赠书
Java开发人员都知道,阅读源码是非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码,比如说最常用的Struts、Hibernate、Spring,这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地完善。这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码,能力都会有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因,不外乎以下几点。
阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。
源码的复杂性。任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次地,最终发现自己根本无法驾驭它,不得不放弃。
有些源码发展多年,会遇到各种各样的问题,并对问题进行了解决,而其中有些问题对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下发生。我们查阅各种资料,查询无果后,会失去耐心,最终放弃。
无论基于什么样的原因,放弃阅读源码始终不是一个明智的选择,因为你失去了一个跟大师学习的机会。而且,当你读过几个源码之后就会发现,它们的思想以及实现方式是相通的。这就是开源的好处。随着各种开源软件的发展,各家都会融合别家优秀之处来不断完善自己,这样,到最后的结果就是所有的开源软件从设计上或者实现上都会变得越来越相似,也就是说当你读完某个优秀源码后再去读另一个源代码,阅读速度会有很大提升。
以我为例,Spring是我阅读的第一个源码,几乎花费了近半年的时间,其中各种煎熬可想而知,但是当我读完Spring后再去读MyBatis,只用了两周时间。当然,暂且不论它们的复杂程度不同,至少我在阅读的时候发现了很多相通的东西。当你第一次阅读的时候,重点一定是在源码的理解上,但是,当读完第一个源码再去读下一个的时候,你自然而然地会带着批判或者说挑剔的眼光去阅读:为什么这个功能在我之前看的源码中是那样实现的,而在这里会是这样实现的?这其中的道理在哪里,哪种实现方式更优秀呢?而通过这样的对比及探索,你会发现,自己的进步快得难以想象。
我们已经有些纠结了,既然阅读源码有那么多的好处,但是很多读者却因为时间或者能力的问题而不得不放弃,岂不是太可惜?为了解决这个问题,作者撰写了《Spring源码深度解析第2版》,总结了自己的研究心得和实际项目经验,希望能对正在Spring道路上摸索的同仁提供一些帮助。这本书是畅销长销Spring图书全新升级版本,基于Spring5.x编写庖丁解牛式讲解Spring工作原理。
《Spring源码深度解析(第2版)》
作者:郝佳
扫描