这周进了一个新项目,接受了以前同事遗留的代码。我所接手的代码都是一些简单的业务操作,比如账单的生成、合同的签订等。这些代码包含但不限于以下特征,让我读起来非常挠头:
。。。
是你的话该如何读这些代码呢?
我曾经试着让 chatgpt 帮我阅读梳理,可能我的 prompt 写的有问题,他也很难帮我将整体逻辑梳理清楚。
请问您有什么好的建议或者 prompt ?
1
swuzjb 2023-10-17 20:17:54 +08:00
能不读就不读。
|
2
chuck1in 2023-10-17 20:18:50 +08:00 3
听起来像是一份年薪百万的工作
|
3
enchilada2020 2023-10-17 20:36:32 +08:00 via Android
我目前的感受就是没办法 六字真言贴显示器旁边 然后硬着头皮一点点 debug 一点点看 尤其是祖传 Java 屎山表达能力差得一比 写了十来行只干了一件事 大部分 if 都在判断空指针 但凡用一下 optional 和 stream 也不至于那么恶心的 就是没有 就硬 for each+if
|
4
wwlzz 2023-10-17 20:38:46 +08:00
不用全部理解,按需求/bug 来,加断点调试,添加日志,测试用例等
|
5
jokechen OP 还有一个问题,有些接口的入参能有 100 多个
|
6
enchilada2020 2023-10-17 20:44:40 +08:00 via Android
@jokechen 真猛 突然觉得我手头的屎山靓丽了许多
|
7
zzNucker 2023-10-17 20:45:22 +08:00
100 多个入参也太离谱了
|
8
Kirscheis 2023-10-17 21:07:52 +08:00
我这有一堆前辈留下的无文档 LabView 程序,目前谁都看不懂,所以我选择整个封装当盲盒用,新需求另建山头。。。
|
9
zjp 2023-10-17 21:21:40 +08:00
看正文感觉还好啊,硬看就是了
看到#5 ,对不起,超出能力范围了 |
10
sadfQED2 2023-10-17 21:27:03 +08:00 via Android
断点调试,一行一行的跟一遍就懂了。
|
11
darkengine 2023-10-17 21:43:16 +08:00
不要读懂他, 要改的时候各种绕路, 例如在上边包一层, 这样就能得到一个更大的屎山了.
|
12
NothingExist 2023-10-17 21:47:42 +08:00
删库重写:)
|
14
enchilada2020 2023-10-17 22:21:49 +08:00 via Android
@sadfQED2 调用栈太深的断点调试其实也不理想 复杂点的只过一遍肯定不够 正手来一个 step over 可能一下子跳了一大段逻辑 反手 step into 个几次回来都找不到北
|
16
HUZHUANGZHUANG 2023-10-17 23:46:05 +08:00 1
|
17
v2eb 2023-10-17 23:50:13 +08:00
先理解业务吧, 有流程图啥的就好了。
|
18
x86 2023-10-17 23:58:24 +08:00
这种写法叫人工混淆加密,一般公司顶梁柱才写的出,优点是别人难以看懂接盘顶替自己...
|
19
enchilada2020 2023-10-18 00:15:46 +08:00 via Android
@x86 有没有另外的可能 比如他自己都维护不下去 只好先甩手跑路了…
|
20
zhangjuanzi 2023-10-18 08:51:49 +08:00
不会仔细读,大概了解一下,碰到需求再定位到要改的地方改了就完事了,也不会想着去优化。而且我也挺喜欢这种代码的,在这种代码上做需求一般会给的时间多点,自己快速做完剩下的时间就做别的。
|
21
8355 2023-10-18 09:08:01 +08:00 1
用常规运行结果反推,不要读全部,以最小的改动代价完成本次需求,能不动就不动。
|
22
ytmsdy 2023-10-18 09:16:49 +08:00
不看!反正看了也看不懂,就算看懂了也不敢去改。
把业务了解清楚就好了,如果出现 bug ,直接 debug 进入调试模式。针对 bug 的场景用 if 特殊处理,其他部分不动! 处理屎山项目的原则就是,能不动就不动,就算要动也只加,不删除。 |
23
ma836323493 2023-10-18 09:17:25 +08:00
抽丝剥茧慢慢来, 前人为了省事打了各种补丁, 我视情况而定, 要有工匠精神
|
24
COOOOOOde 2023-10-18 09:25:13 +08:00
不读, 当成黑盒。
|
25
nenseso 2023-10-18 10:01:04 +08:00
我觉得要有能力改屎山代码,首先要对业务非常熟悉。
|
26
xxiaowangwang 2023-10-18 10:10:42 +08:00
只要钱到位,屎壳郎就是我。
|
27
haitaoli 2023-10-18 10:12:54 +08:00 via iPhone
我也一样 虽然没你手里这么屎 不过我太菜了 也是几个同事断断续续的写了好几年 一行注释都没有 而且之前写这个的人已经离职的差不多了 一点都不想看 摆烂了
|
28
ZGame 2023-10-18 10:14:19 +08:00
厌恶屎山,接受屎山,理解屎山,成为屎山
|
29
haitaoli 2023-10-18 10:15:48 +08:00 via iPhone
@haitaoli 而且交给我活的时候 也没有需求 之前这一块是和另一个功能耦合在一块的 现在让我从里面解出来 差不多就是重写一遍吧 现在直接卡在读代码这一步 读不懂代码 就不知道需求 不知道需求 就没法写
|
30
zw1one 2023-10-18 10:19:22 +08:00
告诉领导和产品,这玩意儿看不了,一改全是坑,挖坑的人全跑了,重写吧。
|
32
bfdh 2023-10-18 10:30:29 +08:00
目前没有这个烦恼,因为我就是那个写屎山代码,然后交给同事的人。
回到楼主问题,我的做法一般是先问清楚业务,从业务反推代码。 |
33
jokechen OP @bfdh 比较麻烦的就是懂业务的人也全跑了,也就是说我们这边好多产品经理都是新接手的。昨天产品经理有一个需求不太明白,找到我说“兄弟,你从代码里帮我看下,这部分需求实现过没?”
--- 今天我已经有些佛性了,因为开始慢慢的有测试找我提一些问题了。 这样我能跟着测试的逻辑一起熟悉代码。。。。 |
34
beisilu 2023-10-18 10:42:46 +08:00
理论上跑起来加断点慢慢来是可以熟悉的。
但是实际情况是跑都跑不起来 |
35
iOCZ 2023-10-18 10:54:41 +08:00
@jokechen 提交表单是字段比较多的一种可能,但是要填 100 多个字段也是没有用户体验了。假如说要上报设备信息,字段很多,那完全可以一个 JSON 字段搞定。
|
36
sankooc 2023-10-18 16:48:58 +08:00
我以前接手过一个 callback 地狱的项目 那一个酸爽
|
37
imqiyue 2023-10-18 17:06:54 +08:00
边骂边看…
|
38
abelmakihara 2023-10-20 11:41:11 +08:00
之前接过的无非就是东拆西拆让它的可读性变强 可以复用
动里面逻辑那是万万不敢的 最多就是继续加 ifelse |
39
unregister 2023-11-21 22:06:40 +08:00
我的工资就是我的精神损失费
|