如何强行吃透一座屎山代码?

6 天前
 qwerthhusn
领导叫我把一套代码的逻辑吃透,重写合入到另外一个 baseline 项目,但是写那个代码的人水平是真的次,应该是刚毕业的,都没咋写过代码就直接上手项目。(我们现在在做工业上位机项目,都是现场开发功能的,没有代码质量管理)。

这个成为屎山有点夸张了,顶多是一个屎堆,但是味儿绝对正点。

* 代码没任何注释
* 到处都是类级别的变量
* 变量和函数和类都是随意起名字 id ,根据名字完全看不出来这个 identifier 是干嘛的,需要去看引用的地方才能看出来,但是有的引用层次关系网异常复杂,绕几下都忘记我要看的是哪个变量了。
* 手拼 JSON ,Split 拆 JSON 等这种操作到处都是。
* 巨无霸代码,所有东西写在一起,有好几个 10000+行数的代码文件。

虽然我工作这么多年也见过非常多的屎山项目,以前做互联网后端,微服务兴起之前,我见到过比这大得多的多的屎山代码,全量编译都能编译个一二十分钟的都有。但是以前是只是在项目上再加点料就行了,而现在要做的是把整个项目吃透,我该怎么办?有没有啥好的策略?

PS:跑路不能算是一个好策略,我在看这坨代码的时候晕头转向,满脑子都在想着跑路,但是现在工作太难找了,经历过后疫情的裁员后找工作从希望到失望到绝望的感觉,我宁愿继续啃这坨代码。
8675 次点击
所在节点    程序员
104 条回复
yikyo
5 天前
最优的方式是先写测试,确保输入输出一致来重构代码,借助 AI 的能力,项目如果不是特别巨大的话,应该还是可以搞的。
lxh1983
5 天前
让你重写又不是维护屎山,这种不是应该吃透业务逻辑就行了吗?
lvtuyukuai
5 天前
听起来是脏活累活,但其实是个好活(如果时间充裕的话)
wusheng0
5 天前
重写还是比较爽的,

因为之前的设计,你想写好代码也没法写,只能被迫拉屎才是坠痛苦的
a1b2c3T
5 天前
@STillSB #3 老哥,我想问下 AI 能给他发个项目链接他给我分析下项目整体架构吗?
jiayouzl
5 天前
嫌麻烦用 AI 帮你啊!屎山代码我都借助 AI 的,最新 o1 和克劳拉 3.5 都能完美解决.~
vipfts
5 天前
@rossroma #13 文章说会替代初级, 可是初级没有工作机会, 以后也不会有高级了, 不过我们公司高级都忙着跟项目需求拉扯, 根本没时间打理新人的脏活, 替代倒是很难
adian
5 天前
强行吃屎还是掉头发,选一个吧
fooso
5 天前
小口慢吃。记得吹一吹,不然烫嘴
sumarker
5 天前
业务优先,然后一点点改吧,没其他办法
LitterGopher
5 天前
@pkoukk #23 那可就不好说了。并非每个人都注重代码质量的。比如 1+1+1+.....(100 个 1) 写起来太长了咋办?正常人一般想法是写成 1*100 ,但我聪明的同事选择写成 100 行,每行一个 1 。

你感受过打开 VSCode 的时候一个 200 行的源代码有 201 个 warrning ?
EndlessMemory
5 天前
理解功能吧,看逻辑是不可能了
774157009
5 天前
吃屎啦你 XD
cheneydog
5 天前
封装
Nothing9527
5 天前
工业上位机领域的代码屎山多很正常, 很多时候要出差到甲方工厂根据现场调试代码, 大部分时候都工期很急, 基本都是想到啥就写啥.
建议:
1. 找个代码架构视觉化工具, 比如 understand, 如果你是.Net 的话, VisualStudio 也有个生成代码视觉树的功能, 把各个模块之间的关系理清楚, 一开始不要死抠细节
2. 模块间关系搞清楚之后, 再尝试理解模块的运行逻辑
3. 一个个模块合并到 baseline 项目中, 有条调机测试的话就调机测试
piero66
5 天前
让 ai 线帮你加一遍注释
Flyfish233
3 天前
有 AI 都不一定可行,有个几年前的加密库用了十几年前的另一个库,全网只有它这唯一实现,虽然开源,几乎没几行注释,后者连测试都没有,现在第一个库都没怎么看懂逻辑,由于代码冗长,AI 很难起比较大的作用,copilot 乱说,我从 ChatGPT 刚开始就在使用,有一定 prompt engineering 积累,但实在搞不定,加上不是太重要,已经搁置等死
janus77
3 天前
吃透不太可能,我一直坚持的理念就是屎山不是一个人写出来的,是多人合作的情况下才会出现的,所以只要是多人合作,那必须就有信息不对称的情况,没有一个人可以通晓全部,哪怕是原作者也不行,因为原作者都只是其中一部分功能或者一部分时期的开发者。
但是通晓一部分功能点是可以做到的,无非就是硬啃呗
honus
2 天前
时间 重构,靠这个读透了一份屎山代码
daimiaopeng
2 天前
问 chatgpt

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

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

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

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

© 2021 V2EX