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
如果重来一次
- 协议设计先实现最小集,用到再加字段,不要”未来预留”
- QTableView 第一天就用 Model/View + 虚拟滚动,而不是后期才加
- 统一错误处理策略 — 全部用
std::expected或返回值,不用异常 - 多线程测试应该从第一周就开始,而不是等到 T013 踩坑才重视
AI 辅助开发的体会
- 文档生成效率极高:需求规格、架构设计、协议文档几乎全部由 AI 辅助完成,人工只做审核和修正
- 代码生成需要审核:AI 生成的 Qt 代码有 20% 左右需要修正(主要是信号槽签名和线程安全)
- 最大的价值在重构:多线程改造时 AI 一次性找出所有需要加
QueuedConnection的 connect 点,人工检查耗时但省了排查时间