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

2020-05-15 17:34:30 +08:00
 Africa
5425 次点击
所在节点    程序员
19 条回复
AngryMagikarp
2020-05-15 17:35:27 +08:00
看懂了
byaiu
2020-05-15 20:22:21 +08:00
可以想清楚加功能的方式。
opengps
2020-05-15 20:24:10 +08:00
脱离代码之后能画出流程图,就已经看懂代码了
msg7086
2020-05-15 20:27:05 +08:00
了解原理,可以自己山寨一套类似功能的软件出来。
wunonglin
2020-05-15 20:32:12 +08:00
能举一反三
rekulas
2020-05-15 20:37:12 +08:00
看过源码:大部分逻辑能理解主要在做什么
看懂源码:能独立开发一个功能类似的简易版库
看透源码:提交 pr 到核心逻辑修复 bug
hantsy
2020-05-15 20:46:04 +08:00
对大部分人来讲,花时间去看源代码是浪费生命。

一个好的开源项目要想推广开来,一般会有文档包括 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-05-15 23:32:44 +08:00
楼上老哥说得对,别去干浪费时间的事了
h123123h
2020-05-15 23:34:08 +08:00
我也不想看,但面试都要问这个,看过啥啥啥源码吗?
namelosw
2020-05-15 23:40:48 +08:00
我每次都很好奇,V2 那些 Java 面试失败的,楼下总有问 JVM 源码看了没?

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

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX