怎样才算真正看过了源码?

2020 年 5 月 15 日
 Africa
6615 次点击
所在节点    程序员
19 条回复
AngryMagikarp
2020 年 5 月 15 日
看懂了
byaiu
2020 年 5 月 15 日
可以想清楚加功能的方式。
opengps
2020 年 5 月 15 日
脱离代码之后能画出流程图,就已经看懂代码了
msg7086
2020 年 5 月 15 日
了解原理,可以自己山寨一套类似功能的软件出来。
shakaraka
2020 年 5 月 15 日
能举一反三
rekulas
2020 年 5 月 15 日
看过源码:大部分逻辑能理解主要在做什么
看懂源码:能独立开发一个功能类似的简易版库
看透源码:提交 pr 到核心逻辑修复 bug
hantsy
2020 年 5 月 15 日
对大部分人来讲,花时间去看源代码是浪费生命。

一个好的开源项目要想推广开来,一般会有文档包括 API 文档去教你的怎么使用,怎么理解它的运行原理,没有哪个开源项目的初中是为了让你的读他的源代码。

好的开源项目,看懂核心源代码很容易,如果你仅仅是为了看这个目的,然后面试时去吹 NB,那么这个事本身就没有意义。10 几年前我也看过 Hibernate2,Spring2 的部分代码,现在几乎不会特意为了去看代码而看代码,感觉没什么太大意义。除了为了解决上游源代码的缺陷,自己要深入的时候才去仔细看,比如,当时在写这个例子,仅仅是看相关的代码几个文件 https://github.com/hantsy/spring-reactive-sample/blob/master/war/src/main/java/com/example/demo/AppInitializer.java 。
nianyu
2020 年 5 月 15 日
楼上老哥说得对,别去干浪费时间的事了
h123123h
2020 年 5 月 15 日
我也不想看,但面试都要问这个,看过啥啥啥源码吗?
namelosw
2020 年 5 月 15 日
我每次都很好奇,V2 那些 Java 面试失败的,楼下总有问 JVM 源码看了没?

感觉就像算法不过总有人问 CLRS 看完了没一样。实际上 Google 看完 CLRS 的都没几个人。

建议有别的方式都不直接看源码,教程,分析,设计文档之类的比较好,自上到下的讲解之类的。
yukiloh
2020 年 5 月 15 日
同意#7
大部分考试也是没有意义的,但我们的世界没有分院帽,而且人会骗人,所以只能提高门槛
hhyvs111
2020 年 5 月 16 日
带着工作中遇到的问题去看才是最有用的,不然看了也是白看
azcvcza
2020 年 5 月 16 日
1.理解思想
2.自己实现
3.跟进社区
24bit
2020 年 5 月 16 日
不参与开发的话,源码看了以后要不了多久也会忘,学习的话关键还是理解作者的思路吧?怎样实现?为什么这样实现?解决了什么问题?

就是面试的时候有些人总喜欢问到某个类某个方法,我又没参与开发,源码又是好久以前看的了,能记住思路就不错了,那还记得住类、方法……
fuermosi777
2020 年 5 月 16 日
为什么要看源码?
xoyimi
2020 年 5 月 16 日
人家问你怎么吃饭才能吃饱,你告诉人家吃饭不能吃太饱。
cabing
2020 年 5 月 16 日
@rekulas 这个大哥说的很明白了。

我抛转引用玉。主要是解决了啥问题,遇到了这个问题你是怎么解决,怎么设计的,设计的难点是啥?

以后遇到类似的问题你是否也能这么设计,或者用到代码里面的设计?

如果工作中经常用到的开源软件比如 redis 或者 kafka 之类的,读完源码,真的有豁然开朗的感觉,原来他出这个问题,或者有这个限制原来是这个原因哦。

深入了解工作中用到的主要软件的原理,对工作不一定会用到,但是真的很有趣。
GrayXu
2020 年 5 月 16 日
看源码主要是理解设计思路吧,就是不希望过于依赖文档,而文档不可能面面俱到。
赞成前面说的流程图论。
GrayXu
2020 年 5 月 16 日
@GrayXu ofc, curd boy 就算了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/672122

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX