JAVA GO RUST 同理 最近在读一个芯片设计领域从逻辑综合工具产生的 json 文件恢复 RTL 信息的 C++代码 虽然是一个相对独立的功能模块 但是涉及到大几百到上千个类 各种函数、类的指针飞来飞去 trace 定义 trace 到几十个文件 还有的代码感觉跟这个模块的 input output 毫无关系不知道在干嘛的(但是一修改结果马上就不对了)
求问下各位资深的开发人员 大佬们拿到一个不是很熟悉的复杂代码 你们是如何尽快熟悉功能结构再到二次开发的呢?在读复杂程序方面有没有什么心得体会传授一下
我现在很容易就陷入到 想一想这个事情就觉得千头万绪无处下手的感觉 东看一下西看一下感觉没有个主轴或者说总的思路 效率很低
1
aptupdate 2022-08-03 08:12:17 +08:00 via iPhone
我现在做的这个 Java 项目和你说的情况差不多,更恶性的是参数动辄十几个,而且还都没注释,要么注释是错的。光靠看根本不行,还是得 debug……
|
3
zhuangzhuang1988 2022-08-03 08:26:56 +08:00
VisualStudio + F5 就好了
要是不支持的话 只能祈求多福吧. |
4
xsen 2022-08-03 08:28:29 +08:00 2
从业务流程入手,先主流程,然后次级别流程
不要关注过于细节的问题,容易只见树木不见森林 C++的代码维护过无文档,注释牛头不对马嘴——代码量十来万的几个项目,都是这样的做法;相对来说是最快、最有效的 |
5
sadfQED2 2022-08-03 08:50:57 +08:00 via Android
断点调试,一行一行的跟呗
|
6
Vaspike 2022-08-03 08:51:22 +08:00
只能 debug
|
7
encro 2022-08-03 09:02:47 +08:00
先求需求开始:搞清楚需求,然后思考如果是我来设计,有哪些设计方案,然后看代码的方案和流程是否和你思考的匹配,不匹配点在哪里?原来这样设计的原因可能是什么?----当然原来的设计不一定是最佳。尝试对原有代码进行分类整理。画出主要和分支逻辑流程图。
然后从你不会的点开始: 那里看不懂,原因是什么,解决办法是什么?光想没用的,动手改造才是正确途径,比如对原有代码进行无痛分类整理,大函数化小函数,补上注释,编写测试代码。 所以,最快上手流程是: 用 debug 工具跑完一个流程,看调用了哪些函数,给这些函数加上注释,然后数理流程(画出流程图 /思维导图 /整理文字),然后思考和验证流程,然后再看旁支末结。 |
8
nmap 2022-08-03 09:29:29 +08:00
你是要完全搞懂?还是为了修 bug ?两种方式完全不一样😑
|
9
yehoshua 2022-08-03 09:57:41 +08:00 via Android
为了学习还是为了调试?调试断点一步步走就可以。学习的话用代码查看软件会方便一些。
|
10
msaionyc 2022-08-03 10:13:59 +08:00
最好还是让他跑起来,之前看其他一些框架源码也是,不跑起来,干看太累太累了,而且效率低,有时候调用关系啥的还理不明白
|
11
lingalonely 2022-08-03 11:24:44 +08:00
只要代码能跑,debug ,debug ,debug 。代码不能跑,那就只能你跑咯
|
12
xdeng 2022-08-03 11:39:18 +08:00
Source Insight VSCode
|
13
SM7 2022-08-03 12:15:06 +08:00
1. 跑起来
2. 打断点看 调用堆栈 3. 打 log 4. 改造验证 |
15
zhanlanhuizhang 2022-08-04 09:39:34 +08:00
用 understand 这样的软件看看。可以帮助理解。
|
16
unlighted 2022-08-04 09:54:30 +08:00
个人的话,会从主代码入手,先看主线,看完之后看局部代码是什么策略.需要配合 IDE,通过 find reference 方便查看那些通过函数指针进行回调的函数
|
17
FranzKafka95 2022-08-04 12:40:34 +08:00 via Android
阅读工具上使用 source insight,阅读时通过思维导图或者流程图帮忙梳理
|