输入关键词开始搜索

PulseQt 项目复盘 — 2.5 周冲刺总结

项目概览

项目PulseQt — 工业数据采集上位机
时间2026-05-18 ~ 2026-06-05(2.5 周)
技术栈Qt 6.5 + C++17 + SQLite
AI 工具全程使用 AI 辅助生成代码和文档
状态v1.0 可交付

做得好的

  • 分层架构一开始就定对了:表示层/业务层/通信层/硬件抽象层,依赖方向清晰,后续加功能几乎没有架构级修改
  • moveToThread 模型选对了:100Hz 数据流稳定不掉帧,三线程(通信/解析/UI)分工明确
  • WAL 模式:SQLite 读写并发从”互斥锁死”变成”各干各的”,解决了最开始最大的性能瓶颈
  • TDD 协议层:ProtocolDecoder 有完整的单元测试,CRC 校验、粘包拆包、异常帧丢弃全部覆盖,后期改协议非常安心

待改进

  • 前期过度设计:协议帧设计时预留了太多”以后可能用”的字段,实际只用到了 30%
  • UI 线程还有阻塞:历史数据查询时大量数据填充 QTableView 仍然卡 UI,应该分页加载
  • 错误处理不统一:有的地方用返回值判断,有的用异常,有的直接 assert
  • CSV 导出赶工:最后两天 rush 出来的功能,没有做内存映射优化,大文件导出会 OOM

如果重来一次

  1. 协议设计先实现最小集,用到再加字段,不要”未来预留”
  2. QTableView 第一天就用 Model/View + 虚拟滚动,而不是后期才加
  3. 统一错误处理策略 — 全部用 std::expected 或返回值,不用异常
  4. 多线程测试应该从第一周就开始,而不是等到 T013 踩坑才重视

AI 辅助开发的体会

  • 文档生成效率极高:需求规格、架构设计、协议文档几乎全部由 AI 辅助完成,人工只做审核和修正
  • 代码生成需要审核:AI 生成的 Qt 代码有 20% 左右需要修正(主要是信号槽签名和线程安全)
  • 最大的价值在重构:多线程改造时 AI 一次性找出所有需要加 QueuedConnection 的 connect 点,人工检查耗时但省了排查时间