大佬们,如何看源码啊?

58 天前
 tpeng9240

类似这种一步一步 debug? 遇到复杂一点的 ,云里雾里的 ,真的有点搞不动啊!!!
投简历已读不回 ,感觉都快自暴自弃,想着提升一下
网络上大部分源码视频讲解也是一言难尽🙃🙃
各位有没有好的学习方法,小弟借鉴一下🧐🧐

5452 次点击
所在节点    程序员
51 条回复
codegenerator
58 天前
@codegenerator 发错了,应该是这个 QQ 群 870794652
zhouhu
58 天前
带着问题看。
11232as
58 天前
小项目就看他 release note ,挑项目刚起步时的代码看,有单元测试得直接挑单元测试看。
大项目先捋一捋模块,看官方资料和官方人员的博客,官方资料看不懂得,看别人写的博客和玩具实现,先理解场景和方向,开源码我用 sourcetrail ,支持 java 。
如果有些代码太杂就翻翻它最初几个版本或者几个关键版本的实现,我理解重要模块思想变动的一般很少,但免不了时间长了里面多了些别的,找几个关键版本,最初的版本看最合适。
Donaldo
58 天前
@Rust2015 #10 Gitee 的搜索功能弱的一批,真的无力吐槽。。
sleepm
58 天前
@levelworm 专业看代码,试了不就知道了
sleepm
58 天前
ide 重
这些工具轻
说的是资源占用,cpu ,内存
不过这几年优化,ide 凑活也能看,大纲,方法导航
yudoo
58 天前
@falsemask 打不开了大哥
iMoutai
58 天前
murmur
58 天前
不看源码,除非要面试,背八股文,需要什么调什么
holy_sin
58 天前
先横着看,再竖着看
Edward4074
58 天前
不满足需求或排查问题的时候才看源码,否则就当成黑盒
lvlongxiang199
58 天前
带着问题看源码, 比如要了解 xx 功能是如何实现的, 最好是先自己想下如果实现 xx 功能, 有哪些小问题需要解决, 再看下他是如何解决这些问题的. 如果这部分功能有单测的话, 那可以 debug 下, 看看跟自己理解的是否一样
(我现在在看 juifcefs sync 这部分的实现 https://juicefs.com/docs/community/guide/sync, 就这个可以提出如下问题
- 看文档描述, 默认是增量同步, 如果存在同名文件, 如何确定是否需要同步 ?
- 当同步的文件比较大的时候, 如何优化性能 ?
- 如果同步时会 update 文件, 如果同步失败的话, 会不会造成文件损坏 ? 他是如何解决这个问题的 ?

第一次看的时候, 我会把非默认配置的分支都给折叠, 跳过这些逻辑
)
bruce0
58 天前
我看 redis 源码的经验, 在 linux 上使用 clion 打开, 然后带着问题去看, 比如 get 命令的执行过程, 然后使用 debug 模式启动 redis, 断点调试
sampeng
58 天前
刚学编程那会会看。现在不看了。这时间花在体验不同的开源项目上更好。当你需要什么功能的时候再去翻就好了。

所以我特别恼火面试问 xx 接口原理的,你看了不代表我看了。我不看不代表我不懂啊。我需要复刻这个接口或者有 bug ,10 分钟的事。。很难么
paradox8599
58 天前
没必要为了看而看,有什么想借鉴的直接上 https://grep.app/
tpeng9240
58 天前
@paradox8599 好的,谢谢
tpeng9240
58 天前
@paradox8599 好东西
lyxxxh2
58 天前
先学设计模式。
不然你看这些更复杂的设计模式,也会一脸懵逼。
tpeng9240
58 天前
@lyxxxh2 好的
zhu327808
58 天前
贴一个我在另外一个问题下的回答吧,可以参考下

---

我最近接手的项目就是这样,只有一份代码,没有文档,只有一个可用的环境,我的方式是这样的,先理解产品的功能,从功能出发猜测大概是怎么实现的,当然要看的是主流程的功能,把一个整个功能流程了解透,再思考如果是自己做该怎么做

有了上一步的一个梳理带着到底是不是这么实现的,来看代码中的主要流程,先不要关注细节,梳理流程,然后把一整个代码的流程串起来

然后就可以开始解遗留的 bug 了,解 bug 的过程就是了解细节的过程,边解边把一些觉得值得重构的点打上 TODO

再然后就是接新的需求了,新的需求肯定是要改造现有的代码的,那就按自己思路做分层,实在改不动的代码就他妈先包成一个函数,写个自己能懂的函数名字,打上注释能用,不要轻易改动

我现在就是尽量自己的新写的代码就把以前的功能完全重构掉,改不动就封装起来,下层的代码尽量要稳定,上层可以快速迭代

当然屎山就是屎山,不可能一步到位,只能走一步看一步了,也没有时间来完全重写

ps:我这里是一个 golang 的项目,然后被各位大佬硬是写成了 java 的风格,我也是服气的,然后上了他们手撸的依赖注入,导致看代码逻辑都是乱的,你都不知道这个对象是从哪里来的,我的妈呀,头疼

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

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

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

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

© 2021 V2EX