是什么支撑你们去看框架源码的?

2019-05-04 19:24:19 +08:00
 binbinyouliiii

我每次去看源码,比如像 Spring 这种,大体思想我还是知道的,但是这么大的框架,完全没有头绪,一个类跟多个类相关,注释也是介绍怎么用,不会介绍架构。

比如一个注解类,整个框架环环相扣,循序渐进越来越多的类根本看不下来,更别说总结了。

网上一堆介绍源码的文章,就简单的介绍两句,接下来就直接贴了一大段代码,看个鬼哦!

有的文章也不错,但是都是只言片语,或者深一点的找不到资料。

老哥们是怎么看源码的,或者说都是硬啃的?

10612 次点击
所在节点    程序员
81 条回复
springmarker
2019-05-04 21:20:38 +08:00
楼上都是为了钱,看来我是一条咸鱼了
binbinyouliiii
2019-05-04 21:22:17 +08:00
@Junh SDK 还好说,架构复杂一点的框架完全没心情。

@springmarker 同是咸鱼
EulerChen
2019-05-04 21:25:00 +08:00
为了钱,为了梦想,为了更牛逼,为了进 BAT
micean
2019-05-04 21:25:05 +08:00
看 spring 的源码当然要崩溃
看 vertx 的源码不晓得多舒服
chuanzhangACE
2019-05-04 21:29:23 +08:00
没看几行,吃个晚饭就忘光了怎么破
javaWeber
2019-05-04 22:01:03 +08:00
我也在思考这个问题。实在是没头绪。、
guyskk0x0
2019-05-04 22:02:22 +08:00
0. 从零开始造一个 web 框架...
1. 从 spring 抄一点,vertx 抄一点,netty 抄一点...
2. 一个集各大框架于一身的框架诞生了...
3. 虽然功能不全,也不知还有多少 bug....
4. 但回头一看,你已经把源码读完了...
Infernalzero
2019-05-04 22:08:56 +08:00
第一阶段是排查问题需要,对框架实现比较清楚的话有些问题很迅速就能定位到
第二阶段是要会用框架,光看官方文档你可能并不知道一些隐藏机巧和细节,源码了解过在有些场景下你可能有更好的解决方案
第三阶段是在框架基础下做扩展,有些需求就需要自己对框架的实现做扩展,这种情况也需要读懂框架相应功能的实现
第四阶段是改框架实现了,有些情况下开源框架无法满足一些特殊的需求,而又没有提供相应的扩展的话就需要自己去改对应的实现了,这种情况下不了解框架实现根本没法改

很多人在第一阶段就没兴趣看下去了,一般看到框架报错多数都是弃疗,有的至少还会去搜索引擎里找下解决方案,但是真正对自己解决问题和编程能力提升的还是得要啃源码才行
lynskylate
2019-05-04 22:28:05 +08:00
因为难免会造一些小轮子,有些功能相似但和开源不一样,可以参考开源项目的模块划分和核心流程。
举个例子,我当时的一个需求是实现类似 jsonschema 拓展的一套验证数据的东西,我参考了 apistar 的验证系统。
xiaoshenke
2019-05-04 22:31:31 +08:00
难道不是因为面试?
GiantHard
2019-05-04 22:35:54 +08:00
如果不出 Bug,为啥要去看源码,当然,有时候也会为了学习优秀开源项目解决问题的方法去克隆仓库来看的。
mringg
2019-05-04 22:38:16 +08:00
就是 bug,到底看看是自己不会用,还是项目本来就有问题
meta
2019-05-04 22:54:54 +08:00
一般是文档写得太烂
skypyb
2019-05-04 23:09:38 +08:00
不会用才会去看...像 spring 这种,大家都会用,平时也不会出啥问题,我是没看过一点源码。
但是我之前折腾 Spring Shell 的时候,画表格有个问题太恶心了,google、Stack Overflow 都找不到解决方案,愣是把那一大块所有的代码全看了。画表格那一块别说如何使用,他代码执行流程啥的我都弄清楚了。(虽然那个困扰我的问题最终也没有解决
zjsxwc
2019-05-04 23:22:32 +08:00
碰到 bug,追了半天发现是框架的锅,然后提交 pr 给官方,等待大佬来指点我的代码
falcon05
2019-05-04 23:29:10 +08:00
调试的时候,偶尔卡壳了,就从头看看源码,带着问题多看几次就熟悉了
iszengmh
2019-05-05 00:17:34 +08:00
写看过源码,岂中是要被面试官问死
my3157
2019-05-05 00:21:20 +08:00
话说楼上应该没有主力语言是 golang 的, golang 一大堆框架 /库, 还都是个人维护的, 各种蜜汁 bug , 不看源码不成, 好在都不大, 而且 golang 没有太多的奇技淫巧, 大部分看得懂
deadseven
2019-05-05 00:34:08 +08:00
我看源代码我能看高潮
usingnamespace
2019-05-05 00:39:53 +08:00
动力一 学习精髓,bug 被你一眼看穿,也为以后开发类似的做准备,比如 redis 你源码研究得差不多了以后开发类似的架构不找你找谁,再一方面更主要的就是学架构和设计,
动力二 面向工资和竞争力
动力三 提高代码品味!!!!

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

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

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

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

© 2021 V2EX