V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
villivateur
V2EX  ›  程序员

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

  •  1
     
  •   villivateur · 2023-09-14 14:32:13 +08:00 · 12561 次点击
    这是一个创建于 465 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因产品整合需求,要把一个 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 谢谢他先给我清空,还煞有其事地写个注释。

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

    102 条回复    2023-09-16 14:59:43 +08:00
    1  2  
    chinaguaiu
        101
    chinaguaiu  
       2023-09-15 22:14:29 +08:00
    @putyy 怎么个说法,请教一下,我 C 不是太懂。是因为字符串值没有正确释放吗?我看见有些人写 java 会有这种写法,故意让垃圾回收器工作。C 这样写的话那块内存直接就回收不了吧?
    makejohn2015
        102
    makejohn2015  
       2023-09-16 14:59:43 +08:00
    @Chad0000
    这不就是微服务吗.
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2894 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.