如何高效阅读陌生项目的代码

2023-07-09 23:20:14 +08:00
 movq

最近在阅读一个现有工程( Java )的代码,代码里面几乎没有任何注释,我想改某个小地方,得把很多地方的代码都从头到尾读几遍

我采取的方式是看到不熟悉的类/方法/成员,就看一下它的 reference ,哪些地方用到了这些东西,这样就能大致理解整个项目的逻辑

也想过画 UML 图之类的,来弄清楚各个类的继承关系

针对这种阅读代码的问题,应该有专门的解决方法,但是我不知道,各位大佬有什么指教吗?

没学过软件工程这门课,是不是应该去学学?或者有什么书或者什么书的某章是专门讲这个的?

2274 次点击
所在节点    程序员
10 条回复
t133
2023-07-09 23:56:10 +08:00
直接打断点进去看 traceback
foolishcrab
2023-07-10 00:19:29 +08:00
业务项目不需要看那么仔细
比如你改一个方法,看 reference 就很高效了。
大部分时候是想改一个字段的取值逻辑啥的,可以用 idea data flow 功能,能快速看到数据流转,不确定的地方找产品确认逻辑就好了
pengtdyd
2023-07-10 01:22:32 +08:00
删字诀,只保留核心功能,最后你会发现其实也就那样
Daybyedream
2023-07-10 02:17:02 +08:00
gpt 或者 cop
dayeye2006199
2023-07-10 07:56:13 +08:00
Mitchell hashimoto(hashicrop 的创始人,terraform, consul, vault 一堆项目的作者)有一篇文章讲他是怎么理解复杂的项目的

https://mitchellh.com/writing/contributing-to-complex-projects
encro
2023-07-10 11:45:12 +08:00
一定是先跑起来,然后找人了解需求,他能做什么,有哪些问题,期望是什么?

然后看目录结构,入口文件。
然后找出系统是怎么实现主要需求的,了解原理,再去看细节。
看的过程做好记录,画好思维导图。
sadfQED2
2023-07-10 11:53:42 +08:00
先把项目跑起来,跑起来以后直接在入口处加断点,然后一步一步跟着看,看一遍就搞明白怎么运行的了。

怕的就是某些屎山项目,很多功能必须在特定环境下才能调试运行,自己本地根本跑不起来。然后再加上原来的人自创的半吊子设计模式,代码跳来跳去的,神仙来了都看不懂
chesha1
2023-07-10 13:05:57 +08:00
把整个文件丢给 chatgpt 看看,比人类读快多了
qiuwj
2023-07-10 13:37:01 +08:00
1 、软件工程简单理解是把一个软件项目按工程的角度去井然有序地开发迭代发布。当你成为项目 owner 的时候这门课就显得非常重要,其次还可能涉及到项目管理之类的,学是要肯定的,也得结合工作需求去理解和实践 。先去看些什么网课视频了解下,后面就啃书理解了。
2 、你接手是俗称的“祖传”项目,要不没文档,要不就是“口口相传”的。那只能如实跟上级反应,给你时间去阅读代码和理解核心模块需求、注意是核心的模块,比如主要的几个 controller 、定时任务和中间件 io 操作(如 MQ 生产消费)等。
3 、让同事先协助你看代码。然后自己借助工具去阅读,比如 idea 可以看类继承关系、或者 AI 工具等。
4 、实在是屎山代码,有能力有时间的话就自己来重构,不行就只能润了,不然你都维护不了,上面也不给你时间,那迟早要被叼死的了。
blankmiss
2023-07-10 13:50:33 +08:00
我一般是从接口断点追踪到数据库

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

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

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

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

© 2021 V2EX