因产品整合需求,要把一个 C++ Qt 写的上位机软件重构到 PyQt 中。主管不同意用现有框架直接包装原有的 Qt 程序,要我直接按需求重构。(可能主管也早就意识到了这个屎山迟早会炸)
这个屎山有多屎呢:
- 十年前的老代码,经手过无数人
- 编译一下,平均一个文件十个 warning ,不乏长度为 9 的数组访问第 9 个变量这种奇葩事
- 变量名潇潇洒洒,驼峰的,下划线的,大写的,小写的,混合的
- 真正实现了“低内聚,高耦合”,三个线程,几十个函数,共用一个一百多行的结构体……
- 有个功能是初始化两个设备(互相独立),两个设备各要执行几个函数,结果代码里面,是 A 设备先执行两个函数,B 再执行两个,再执行 A 的……不懂的人还以为这两个设备有啥奇妙的联系。
- 驱动模块和业务模块居然用 extern 来共享一个变量……
还有很多……
给大家欣赏一下屎山的一角:
scanThreadData->mcuFirmWare_path = ""; //清空 mcu 固件路径
scanThreadData->mcuFirmWare_path = ScanFirewareBin(IS_NGFDFILE, ProductCodeStr);
这个 mcuFirmWare_path 是个 string 类型的数据,我 TM 谢谢他先给我清空,还煞有其事地写个注释。
看这个代码,每看一行我都要理一下自己的脾气。