学习源代码的意义

曾经面试过一些程序员,给我的感觉是什么了?发现一部分的程序员能够回答一些原理性的东西,他们对一个技术的原理性的认识是通过看一些视频里某个老师的讲解而得知,或者是通过看一些文章而得知,或者是通过看源代码后而得知,总之对一个技术工具的认识总得要有个来源吧,没错,这种学习的来源是值得学习的,是一种好的表现。但是,我认为如果是备着回答面试官的面试问题而去学习的话,这种学习态度是要不得的,这种学习是骗人骗己的,这种学习的出发点是不对的。

这样说来,那什么样的学习态度是对的呢?我认为,首先学习的对象应该是被自己在工作中正在使用的或者是当前所需要的或者是正在计划需要的前提下,然后再带着问题去学习它,咿呀!带着啥问题了?这个问题啊,就是你对这个东西它到底是个什么东西,它的内部具体是怎么实现的,你还搞不清楚!实现这个东西的技术思想还没吃透!实现这个东西所使用的方式方法还不能为自己所应用!然而我很想搞清楚、很想吃透其中的技术思想、很想完全能够应用其中的方式方法、很想在工作中快速又很好的解决实际问题,这种很想是完全出于自己内心世界的需要,所以这种学习态度才是有目的性的带着问题去学习的态度,这是有的放矢的学习态度,这种有的放矢的学习态度正是实事求是的精神。

学习一个东西,特别是学习一门技术一定是反复学习的,绝对不是学一些表面上所谓的原理性知识去应付面试这种一时的学习冲动,而是要从优秀的作品中学习作者的思想和表达方式,把学到的思想和表达方式在平时要多加以练习,光看不练都是假把式不可能真正的有收获,过一段时间就啥都记不起来了,更谈不上在工作中应用,学习的目的就是要精通,精通的目的就是在于应用。

对于一个程序员来说他没有看过大师写的代码,没有理解透大师在代码中所使用的设计模式、架构思想,或者是没有模仿过大师写代码的风格,或者没有练习过一些设计模式,或者没有用大师在大量代码中已经应用了证明了的好的架构思想指导自己写过代码,这样的程序员能辨别出好的代码吗?这样的程序员能写出好的代码吗?这样的程序员能写出条理清晰结构清晰扩展性强的代码吗?这样的程序员能有功能模块的全局架构把控能力嘛?我想只有不断的学习、不断的模仿、不断的应用、不断的创新,把这个过程循环往复的进行下去,直到自己能达到模仿(无我)、到创新(自我)、再到超越(忘我)的过程,这个知识就到家了。

有一些程序员压根就不知道自己要学习些什么技术,总是东学一下掌握一些表面的技术、西学一下又掌握些表面的技术,完全是在无目的性的片面的学习,他以为自己学了这么多方面的技术认为自己已经了不起了,实际上在工作中又用不上,写的那些代码一是可读性不强、无扩展性、功能模块不成体系,没有体现盒子包盒子的思想,每个盒子实现单一的功能职责思想,只是为了实现功能而功能的写代码,像个刚入行的学生一样完全不考虑未来的维护与迭代成本。

作为一个程序员学习某一个框架,我们要从框架的应用开始,首先学会使用这个框架,从使用的地方开始切入思考和探究它的内部实现。比如:我们对Spring框架的使用已经会了,我们想搞明白Spring Bean的创建过程是怎样的?我们还想搞明白Spring Aop是怎么实现的?当我们还没有学习的思路的时候,我们可以先看看别人是怎么讲解的,然后根据人家讲解的脉络去进行源代码的阅读。比如对Spring Bean的创建过程的引导学习可以参考:getBean()方法源码解读-CSDN博客

对Spring Aop是怎么实现的引导学习可以参考:Spring Aop 源码解读-CSDN博客

作为一个程序员要热爱于写代码,要时常阅读学习有代表性的框架中的源代码,把写出结构好层次清晰的好代码、写出阅读性好的代码、写出扩展性强的代码、写出性能高的代码,作为自己作为程序员写代码的高追求。如果作为一个Java程序员应该学习Spring框架,把能写出像Spring框架那样好的代码作为自己写Java程序代码的高追求。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值