程序员写代码为什么要阅读源码?

简介: 阅读一篇技术文章,畅聊一个技术话题。本期文章推荐的是《Node 中的 AsyncLocalStorage 的前世今生和未来》,一起来聊聊开发者阅读源码的这件事。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,可以对技术深度的理解,也能提高对技术的理解程度。然而,仅仅阅读源码并不能代替实践操作,因为通过实践,可以更加全面的理解代码的深度和进展。

1、程序员写代码为什么要阅读源码?

了解代码的实现细节:

通过阅读源码,可以更好的理解代码是如何实现的,包括源码的算法、数据结构以及实现方式等等。这有助于程序员更好的理解源码,并且能够更好的解决问题。

image.png


排查错误:

在代码出现错误的时候,源码可以帮助程序员来排查错误的原因,比如说selectone这个函数,为啥会报错,通过源码可以看出来,selectone在查询的时候,如果长度大于1就直接抛异常了。所以如果不能保证唯一性就不能使用该方法的调用。


提高代码的性能:

通过阅读源码,可以了解代码的性能瓶颈,并且找到更好的实现方法,用于提高代码的效率,比如说一个查询很高的集合类,通过链表进行定义集合就不合适了,这个时候更多的时候,使用数组可以实现高效率。比如进行大量字符串的拼接的话,使用StringBuffer和StringBuild就会有很大的区别。如果不懂内部的原理,不去看源码就很难写出更加安全高效的代码。


学习新的技术:

通过查看源码,可以学习更加好的代码实现,比如说spring、springboot的源码,里面的数据结构、反射、以及缓存的实现等等,设计代码都比较优秀,这个如果在解决实际工作中的功能时候,可以借鉴一些写法。用以学习新的技术。而不是通过if、else来解决问题。程序员的使命,不断学习、不断提高自己的技能。

2、你觉得阅读源码的正确姿势是什么?

image.png

先整体、后细节:

在看一个源码的时候,比如说spring的框架,一定要先弄清楚,spring框架一共分为几个模块,然后根据不同的模块,再进行细分看具体的实现逻辑;这个学习的思想就是,先要弄清楚看的源码是什么,然后再进行细分。比如说了解一个大象的话,先弄清楚大象的四肢、头、长鼻子、象牙。然后再根据不同的部分进行细化的了解,不能的习性、功能。这样才能更加完整的了解大象。


站在巨人的肩膀上:

这个就是说,如果学习一段源码,还是要从经典开始,如果学习的源码本身就不稳定,的确就没有学习的必要了。先要看名著、或者目前流行的框架,只有学习这样的源码才有价值。当然也可以看一些底层的源码,毕竟现在很多都是从事高级语言,低层语言也是很多必要的,不要求都能看懂,但是至少要懂得原理。


多读多练:

多读,读源码就是要理解,大概源码是做了那些事情,然后这些事情是如何进行实现的;每一次读源码可能都会有不同的心得体会。理解的程度也会有所不同。所以说经典的源码要经常读才行。书读百遍其义自见。

多练,读只是方法,练习才是根本,因为最后要实现功能的,如果只是读的话,永远不知道,自己实现起来是否与自己想的是否一致。就像名言说的一样,实践是检验真理的唯一标准。

3、什么场景下你会阅读源码?从中得到了怎样的收获?

使用的时候:

使用框架之前,一定要看一下内部实现的原理是什么,这样才能更好的使用,避免接口都不清楚就使用。这样可以减少很多的问题;

遇到问题的时候:

在实现了一个功能之后,发现这个功能报错了,如果不是逻辑的问题,要看一下源码的写法是什么,这样才能更好的定位问题、解决问题。

学习的时候:

在实际的工作中,也要学习很多新的框架,这个时候读源码是最好的方式。


相关文章
|
6月前
|
物联网 程序员 API
程序员必知:WndPric的使用方法
程序员必知:WndPric的使用方法
32 0
|
7月前
|
NoSQL Java 应用服务中间件
关于阅读源码
【1月更文挑战第12天】关于阅读源码
|
算法 搜索推荐 程序员
程序员代码面试指南之笔记01(上)
一、算法数据结构基础课 第一节 一、 评估算法
71 0
程序员代码面试指南之笔记01(上)
|
设计模式 JavaScript 前端开发
|
JavaScript 程序员 API
程序员为什么会在开发中阅读源码?
作为程序员的大家想必都会在开发的时候,去阅读源码。在实际开发中,开发者经常需要阅读和理解源代码,阅读源码是一种非常有用的技能,它可以帮助程序员更好地了解代码、解决问题、学习新技术和提高编码能力。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,这被看作是对技术深度理解的一种体现,它能提高我们对技术的理解程度。结合阅读《Node 中的 AsyncLocalStorage 的前世今生和未来》这篇文章之后,我深刻体会到了作为开发者阅读源码的重要性和必要性。通过阅读这篇文章,我对 AsyncLocalStorage 的实现原理和使用方式有了更深入的理解
236 3
程序员为什么会在开发中阅读源码?
|
机器学习/深度学习 算法 程序员
程序员代码面试指南之笔记01(下)
4) 局部最小值问题 public class Code06_BSAwesome {
42 0
|
设计模式 C#
C#—代码理解知识点(二)
上回介绍了关于第一章所设计的那些知识点,这次介绍一下第二章所涉及到的代码,以及由代码折射出的知识点!
C#—代码理解知识点(一)
有上面的代码之后就不得不上传上上面这个图片了,这是我们刚开始学习C#接触的第一个程序,虽然只是一个简单的输出“Hello World"程序,却带给我了我们这么多的知识以及如此规范的模版!
|
设计模式 分布式计算 资源调度
如何阅读源码
如何阅读源码
216 0
|
Java
Java源码阅读(不断补充)
Java源码阅读(不断补充)
127 0

相关实验场景

更多
下一篇
DataWorks