程序员如何阅读源码?大牛是如果形成的?

业余杂谈 herman 387浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

Java 程序员如何阅读源码?大牛是如果形成的?如果高效熟悉一个系统?如果快速融入新公司,接收一个新项目?我相信很多人都有这样的困惑,今天我抽个时间一起来聊一聊我的个人经验。

群里有人问我阅读源码技巧,如下:

源码交流群

具体是哪一天,我忘记了。所以,我就搜索了一下关于“源码”的群聊天记录。我记得前面好像有两个人提到如何阅读源码,至于是在群里还是公众号里留的言,我忘记了!

好的阅读源码的习惯,我认为应该做到一下几点!

第一,学会会做笔记。这里我推荐使用思维导图,比如下面是我做的一个关于阅读其他系统源码的笔记。

阅读源码的正确方法和技巧

看到没,这样做想不会都很难!如果还做不到这一点,或者虽然这样做了,但是还有点吃力。那么看我的第二条!

第二,在阅读源码之前,学一点设计模式!

你要记住,当遇到 XXFilter,那可能就是过滤器模式;看到 XXBulider,那就是建造者模式;看到 XXFactory,那就是工厂模式;看到 XXStrategy 那就是策略模式;看到 XXSingleton,那就是单例模式;看到 XXProxy,那就是代理模式;看到 XXChain,那很可能就是责任链模式;看到 XXInterpreter,那很可能就是解释器模式;看到 XXTemplate,那可能就是模板方法模式;……

别问为什么?因为老外都喜欢这样起名字。还有一些习惯,比如 xx.util.xx 那就是工具类,xx.dao.xx,xx.service.xx 这对应的包就是对应的分层结构。

做到上面 2 点,如果你还做不到,请看第三点。

第三,万能的 debug。

把代码跑起来,你千看万看,看不懂,没关系,跑起来。跑起代码来,比你干看一万遍都强。

跑起来之后,看不懂的地方,debug,调试。

第四,我再啰嗦一条。你看源码不要一直抓着细节不放。

这一点,你搞不懂,跳过,看一下段内容。先把架构搞熟。看懂其他的后,在反过来看前面的。你会恍然大悟,原来是这样设计的!

实在不行,你就多画点类图。在结合注释,英文注释看不懂,就百度翻译。没注释,就看方法名字。看不懂单词,同样的翻译。根据一个方法的名字,应该就能看出来它的作用。

为什么你看不懂源码呢?因为你学习的知识少,比如,你经常使用的 if else 等,别人可能包装成了设计模式。本来几行代码搞定的,变成设计模式后,多了好几个类。

没办法,好的架构就是容易扩展,为了高度可定制化而生的。你那种只为完成功能的思想应该放下。

还有在群里多交流,多沟通,多帮忙解决其他人的问题。我一个搞 Java 的,解决了测试的问题,运维的问题,C 的问题,Go 的问题,我就是全栈。

记住,下一份工作你就能腾飞,还有什么是你做不到的呢?

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 程序员如何阅读源码?大牛是如果形成的?