重构屎山的痛。我已经坚持了三四天了,必须要在这里发泄下,不然会炸。

2023-09-14 14:32:13 +08:00
 villivateur

因产品整合需求,要把一个 C++ Qt 写的上位机软件重构到 PyQt 中。主管不同意用现有框架直接包装原有的 Qt 程序,要我直接按需求重构。(可能主管也早就意识到了这个屎山迟早会炸)

这个屎山有多屎呢:

  1. 十年前的老代码,经手过无数人
  2. 编译一下,平均一个文件十个 warning ,不乏长度为 9 的数组访问第 9 个变量这种奇葩事
  3. 变量名潇潇洒洒,驼峰的,下划线的,大写的,小写的,混合的
  4. 真正实现了“低内聚,高耦合”,三个线程,几十个函数,共用一个一百多行的结构体……
  5. 有个功能是初始化两个设备(互相独立),两个设备各要执行几个函数,结果代码里面,是 A 设备先执行两个函数,B 再执行两个,再执行 A 的……不懂的人还以为这两个设备有啥奇妙的联系。
  6. 驱动模块和业务模块居然用 extern 来共享一个变量……

还有很多……

给大家欣赏一下屎山的一角:

scanThreadData->mcuFirmWare_path = "";    //清空 mcu 固件路径
scanThreadData->mcuFirmWare_path = ScanFirewareBin(IS_NGFDFILE, ProductCodeStr);

这个 mcuFirmWare_path 是个 string 类型的数据,我 TM 谢谢他先给我清空,还煞有其事地写个注释。

看这个代码,每看一行我都要理一下自己的脾气。

12497 次点击
所在节点    程序员
102 条回复
IBN5100
2023-09-14 16:27:02 +08:00
还有注释 还不感恩戴德
ma836323493
2023-09-14 16:34:46 +08:00
哈哈,这有啥, 当年我重构了 一条 50kb 的 sql
lDqe4OE6iOEUQNM7
2023-09-14 16:41:08 +08:00
写代码的最高境界就是屎上雕花,屎山不是一日建成的,加油,奥利给
ryd994
2023-09-14 16:51:09 +08:00
@villivateur #10 你是什么时候产生了能成功的错觉?这种症状多久了?

不是代码写完就完事的啊,之后 debug 才是大坑。自己跑通了之后还得联合上下游组件调试。内部调试完之后还要上线。上线折腾个十天半个月的很正常。最怕是上完线了,一周之后,某个没人知道的 corner case 炸了。

Linus:If it's a then it's not a bug, it becomes a feature. You can't just fix the bug and say that's undefined behavior.
ryd994
2023-09-14 16:52:44 +08:00
Linus:If it's a bug that people rely on, then it's not a bug, it's a feature.

<amp-youtube data-videoid="Pzl1B7nB9Kc" layout="responsive" width="480" height="270"></amp-youtube>
iweus
2023-09-14 17:08:15 +08:00
这有啥,14 年前的代码依然在维护,只要不崩就没事
xiangyuecn
2023-09-14 17:10:42 +08:00
钱到位,屎珍香😅
cy18
2023-09-14 17:14:43 +08:00
具体情况不清楚,不过上位机是屎山,下位机的代码估计也好不了,大概率有很多莫名其妙的逻辑是用来上下位机配合的,搞不好还需要通过软件处理什么硬件 bug...
祝 LZ 好运...
villivateur
2023-09-14 17:18:21 +08:00
@dog82
@dif
因为业务需要重构
Valid
2023-09-14 17:18:36 +08:00
自由代码,没有任何约束
CodeGou
2023-09-14 17:28:05 +08:00
前辈不写出还能跑的屎山,哪来的后代能换钱的工作内容。这是大树好乘凉啊~
EEEEx
2023-09-14 17:36:33 +08:00
能跑的代码就是好代码
yyysuo
2023-09-14 17:45:11 +08:00
屎山真的不是问题,重构大概率出 bug ,才是大问题。
TArysiyehua
2023-09-14 17:46:34 +08:00
你主管有不懂技术,自己包装一下就说是重构了呀?这么老实,工资一定涨得很慢吧。(阴险脸)
SeanTheSheep
2023-09-14 17:48:05 +08:00
我装了一个周的 vb6, 我放弃了,直接写个新的拉倒
clino
2023-09-14 17:48:06 +08:00
正在重构重写多年以前的 perl 代码,还好现在有 AI 辅助,读和写代码的效率高很多,否则 t*d 要憋屈死
yishuiliunian
2023-09-14 18:00:48 +08:00
只要人和代码有一个能跑就行
lakehylia
2023-09-14 18:25:51 +08:00
只要算 KPI 那就重构呗,拿钱办事没毛病
Justin13
2023-09-14 18:29:05 +08:00
还行吧,我现在在给 ios 的项目的一个核心部分加功能
大部分代码至少都有 10 年的,说至少是因为当初迁移到 git 就是 10 年前
里面充斥着各种重复,错误,无用,特殊的代码
而我是一个写 js 的前端,之前没有接触过任何苹果相关技术
现在每天大概三分之一时间在看代码和逻辑,三分之一学习语言和 UI 库,剩下的时间在骂娘。。
至于原来维护的人呢?写前端去了。。
zhuangzhuang1988
2023-09-14 19:02:03 +08:00
用 Pyqt 后会更加屎了

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

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

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

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

© 2021 V2EX