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

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

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

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

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

PS:跑路不能算是一个好策略,我在看这坨代码的时候晕头转向,满脑子都在想着跑路,但是现在工作太难找了,经历过后疫情的裁员后找工作从希望到失望到绝望的感觉,我宁愿继续啃这坨代码。
10486 次点击
所在节点    程序员
104 条回复
messaround
77 天前
说白了就是不会梳理代码,同时有怨气
fffq
77 天前
输入输出了解清楚,里面想怎么拉怎么拉,不对,想怎么写就怎么写
blankmiss
77 天前
我劝你不要不知好歹 哈哈哈
gjnevergo
77 天前
用 co-pilot
MrZhangLo
77 天前
@XiaoXiaoMagician 不吃透,怎么拉新的。。
NjcyNzMzNDQ3
77 天前
@BugCry 嘿嘿嘿 我也是包一层
wjhmrc
77 天前
先去翻 prd ,试图从代码理解业务是很困难的
JackSlowFcck
77 天前
@cccvno1 #8 可行,先解决架构问题
JackSlowFcck
77 天前
领导叫我把一套代码的逻辑吃透,重写合入到另外一个 baseline 项目
---
首先,时间给多久?很少,跑路吧。很多,不妨作为练手过程。
其次,建议从架构维度去看,一个系统无法是为了解决具体问题,那么这个项目是为了解决什么,其功能点是什么,对应代码块在哪,梳理清楚,大概八九不离十了。
然后,莫名其妙的地方,先忽略,遇到再说。
最后,把自己需要写的地方加上。
polo3584
77 天前
不建议一次全改,容易长时间得不到正反馈,还容易被小问题卡进度。先跑通一个主支,然后逐渐往里加功能
NX2023
77 天前
@cccvno1 #8 要是有完善的单测就好了((直接看单测的输入输出一个个自己在糊一次
vevlins
77 天前
代码理解不了的,从业务理解。

有些代码其实早就是没用的代码,或者重要性没那么高,你就算没实现也不会有什么问题。只要业务本身没那么复杂,一样可以抽出来比较简单的实现。
yufeng0681
77 天前
@MrVito #30 封装思路不错,可能实操方面,最好分出来几个特性,然后逐个封装合入。 这样有一定的解耦性,会更灵活一些。 不会,每次有问题,都要全部翻看一遍代码。 累球死人。
cccvno1
77 天前
@NX2023 确实,但是这种项目写单测的太少了,想加都很困难,有些离谱的 debug 都不行
kinkin666
77 天前
生产上拉日志看输入输出都是咋回事
ala2008
77 天前
可能功能没那么多,反正是重写,重新设计
JeffersonHuang
77 天前
屎山,吃透也没意义。因为吃的是屎
nyxsonsleep
77 天前
想要避免被失去利用价值可太简单了。这种工控程序的,连代码管控都没有,写个二进制的包作为关键依赖组件,根本用不着什么史山。
还是写测试用例,从关键函数输入输出着手吧。
yyysuo
77 天前
当然是打包引用了,没有 bug 就别改了,我估计也没人能说得清业务需求。
zypy333
77 天前
在想有没有 ai 助手,给一个文件夹,他自己帮忙拆开喂给 gpt ,然后告诉你每个地方都是干嘛的,或者在每个方法每个变量加注释

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

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

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

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

© 2021 V2EX