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

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

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

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

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

PS:跑路不能算是一个好策略,我在看这坨代码的时候晕头转向,满脑子都在想着跑路,但是现在工作太难找了,经历过后疫情的裁员后找工作从希望到失望到绝望的感觉,我宁愿继续啃这坨代码。
10483 次点击
所在节点    程序员
104 条回复
auhah
77 天前
先往里拉点屎融入屎山就好了

融的多了就知道怎么改了

一点点改
lyxxxh2
77 天前
既然是刚毕业的,项目能有多复杂。
理解需求,直接重构。
STillSB
77 天前
尝试下借助 AI 的力量
prosgtsr
77 天前
拉个分支,重构一下来理解,然后再回头来改原先的分支
crocoBaby
77 天前
直接加自己的屎山就好了,之前的屎山我都是不管的,只要功能需求能实现就行
fregie
77 天前
能吃透的就不叫屎山
Jinnrry
77 天前
找产品要产品文档,然后直接重构,不看代码
重构完再找测试要测试用例,跑一遍搞定
cccvno1
77 天前
这种项目先不要去关注代码细节,先找到各个操作的输入输出理清业务会简单很多
reallycool
77 天前
举个例子,怎么吃透一个人的武功,你比他强,吃透就很简单,你不如他,那就觉得和屎一样难理解
XiaoXiaoMagician
77 天前
为什么喜欢隔这吃屎呢?都定屎山了,要么搅乱,要么别管,让后你自己拉坨新的,你为什么要去研究怎么吃透.......
zhangeric
77 天前
用 vs 开发的话,可以用 vs 自带的分析工具先分析一下.
rossroma
77 天前
借助 AI 吧,最近都在吹 cursor ,你要么装一个试试
rossroma
77 天前
可以看下这篇使用 cursor 感受的文章: https://mp.weixin.qq.com/s/shmpkeH_FmZ53GZDpKimQw
willchen
77 天前
别想着一口气吃透了 写一块看一块 慢慢打补丁吧
ytmsdy
77 天前
只能借助 AI ,一个函数一个函数拆解了。让 AI 给你写注释,然后你快速看一下,大概那些功能在那些函数里面。
你如果要新增功能的话,单独开新的问题,单独写。
xuelang
77 天前
如果能知道代码的功能,比如有配套测试的话,干脆让 AI 重构一下
zh584728
77 天前
吃不透的,用 AI 看一下,能用的就用,不能用的就重新写
lightjiao
77 天前
写测试用例,花时间,一点点重构
guanzhangzhang
77 天前
先尝试看看几个重要功能测试正常不,看那块大概逻辑和产品文档一致,看不下去那块代码就整个重构得了
LitterGopher
77 天前
如果是我的话我不会从代码入手,而是从业务入手。两个原因:

1. 旧代码中指不定存在一些不管你水平如何都要加个 if 的那种被迫垃圾的代码,而且有些情况不是很好判断具体是水平问题还是业务要求,别一不小心 “优化” 掉了。
2. 代码本来就服务于业务,更好的了解业务才能明白整个代码,而且即便代码看不下去想要从写也能有的放矢。尤其是对于整体代码逻辑的构建(代码框架)。

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

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

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

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

© 2021 V2EX