1、程序员写代码为什么要阅读源码?
了解代码的实现细节:
通过阅读源码,可以更好的理解代码是如何实现的,包括源码的算法、数据结构以及实现方式等等。这有助于程序员更好的理解源码,并且能够更好的解决问题。
排查错误:
在代码出现错误的时候,源码可以帮助程序员来排查错误的原因,比如说selectone这个函数,为啥会报错,通过源码可以看出来,selectone在查询的时候,如果长度大于1就直接抛异常了。所以如果不能保证唯一性就不能使用该方法的调用。
提高代码的性能:
通过阅读源码,可以了解代码的性能瓶颈,并且找到更好的实现方法,用于提高代码的效率,比如说一个查询很高的集合类,通过链表进行定义集合就不合适了,这个时候更多的时候,使用数组可以实现高效率。比如进行大量字符串的拼接的话,使用StringBuffer和StringBuild就会有很大的区别。如果不懂内部的原理,不去看源码就很难写出更加安全高效的代码。
学习新的技术:
通过查看源码,可以学习更加好的代码实现,比如说spring、springboot的源码,里面的数据结构、反射、以及缓存的实现等等,设计代码都比较优秀,这个如果在解决实际工作中的功能时候,可以借鉴一些写法。用以学习新的技术。而不是通过if、else来解决问题。程序员的使命,不断学习、不断提高自己的技能。
2、你觉得阅读源码的正确姿势是什么?
先整体、后细节:
在看一个源码的时候,比如说spring的框架,一定要先弄清楚,spring框架一共分为几个模块,然后根据不同的模块,再进行细分看具体的实现逻辑;这个学习的思想就是,先要弄清楚看的源码是什么,然后再进行细分。比如说了解一个大象的话,先弄清楚大象的四肢、头、长鼻子、象牙。然后再根据不同的部分进行细化的了解,不能的习性、功能。这样才能更加完整的了解大象。
站在巨人的肩膀上:
这个就是说,如果学习一段源码,还是要从经典开始,如果学习的源码本身就不稳定,的确就没有学习的必要了。先要看名著、或者目前流行的框架,只有学习这样的源码才有价值。当然也可以看一些底层的源码,毕竟现在很多都是从事高级语言,低层语言也是很多必要的,不要求都能看懂,但是至少要懂得原理。
多读多练:
多读,读源码就是要理解,大概源码是做了那些事情,然后这些事情是如何进行实现的;每一次读源码可能都会有不同的心得体会。理解的程度也会有所不同。所以说经典的源码要经常读才行。书读百遍其义自见。
多练,读只是方法,练习才是根本,因为最后要实现功能的,如果只是读的话,永远不知道,自己实现起来是否与自己想的是否一致。就像名言说的一样,实践是检验真理的唯一标准。
3、什么场景下你会阅读源码?从中得到了怎样的收获?
使用的时候:
使用框架之前,一定要看一下内部实现的原理是什么,这样才能更好的使用,避免接口都不清楚就使用。这样可以减少很多的问题;
遇到问题的时候:
在实现了一个功能之后,发现这个功能报错了,如果不是逻辑的问题,要看一下源码的写法是什么,这样才能更好的定位问题、解决问题。
学习的时候:
在实际的工作中,也要学习很多新的框架,这个时候读源码是最好的方式。