You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8.2 KiB

代码重构和模块化改造计划

问题分析

1. 业务领域不匹配问题

从"同地协同伤员搜救系统"转换为"战场探索系统",需要清理以下内容:

发现的injury相关文件

源代码文件:

  • src/InjuryAnalysisUI.cpp - 伤员分析界面
  • src/InjuryDatabase.cpp - 伤员数据库
  • src/injurydisiplayui.cpp - 伤员显示界面
  • src/moc_InjuryAnalysisUI.cpp - 自动生成文件
  • src/moc_injurydisiplayui.cpp - 自动生成文件

头文件:

  • include/InjuryAnalysisUI.h
  • include/InjuryDatabase.h
  • include/injurydisiplayui.h

UI文件:

  • ui/InjuryAnalysisUI.ui
  • ui/injurydisiplayui.ui

2. 目录结构混乱问题

  • src/ 目录14个文件平铺缺乏模块分类
  • ui/ 目录4个UI文件平铺没有按功能分组
  • 缺乏清晰的架构层次

重构策略

Phase 1: 目录结构重组 🏗️

新的目录结构设计:

src/
├── core/                     # 核心业务逻辑
│   ├── database/            # 数据库相关
│   │   ├── DeviceDatabase.cpp (重命名自UAVDatabase+DogDatabase)
│   │   └── ConnectionManager.cpp (新建)
│   ├── services/            # 业务服务
│   │   ├── DeviceService.cpp (新建)
│   │   └── ExplorationService.cpp (新建)
│   └── models/              # 数据模型
│       ├── Device.cpp (新建)
│       └── ExplorationTask.cpp (新建)
├── ui/                      # 用户界面
│   ├── main/                # 主界面
│   │   └── MainWindow.cpp (重命名自guidingui.cpp)
│   ├── components/          # 可复用组件
│   │   ├── DeviceCard.cpp (新建)
│   │   ├── DeviceListWidget.cpp (新建)
│   │   └── StatusPanel.cpp (新建)
│   ├── dialogs/             # 对话框
│   │   └── DeviceDialog.cpp (重命名自robotlistdialog.cpp)
│   └── exploration/         # 探索相关界面
│       ├── ExplorationDashboard.cpp (替代InjuryAnalysisUI)
│       └── MapExplorer.cpp (替代injurydisiplayui)
├── utils/                   # 工具类
│   ├── Logger.cpp (新建)
│   └── ConfigManager.cpp (新建)
└── main.cpp

forms/                       # UI表单文件
├── main/
│   └── MainWindow.ui (重命名自guidingui.ui)
├── components/
│   ├── DeviceCard.ui (新建)
│   └── StatusPanel.ui (新建)
├── dialogs/
│   └── DeviceDialog.ui (重命名自robotlistdialog.ui)
└── exploration/
    ├── ExplorationDashboard.ui (替代InjuryAnalysisUI.ui)
    └── MapExplorer.ui (替代injurydisiplayui.ui)

Phase 2: 业务重构计划 🎯

文件重命名和功能转换:

原文件 新文件 功能转换
InjuryAnalysisUI.* ExplorationDashboard.* 伤员分析 → 探索数据分析面板
injurydisiplayui.* MapExplorer.* 伤员地理显示 → 探索区域地图显示
InjuryDatabase.* ExplorationDatabase.* 伤员数据管理 → 探索任务数据管理
guidingui.* MainWindow.* 引导界面 → 主控制台界面
robotlistdialog.* DeviceDialog.* 机器人列表 → 设备管理对话框

类和变量重命名:

类名转换:

// 原来的类名 → 新的类名
InjuryAnalysisUI  ExplorationDashboard
InjuryDisplayUI  MapExplorer  
InjuryDatabase  ExplorationDatabase
GuidingUI  MainWindow

变量和方法名转换:

// injury相关 → exploration相关
injuryData  explorationData
addInjury()  addExplorationPoint()
getInjuryList()  getExplorationTasks()
injuryCount  explorationPointCount

// 其他改进
robotList  deviceList
UAVList  droneList

Phase 3: 代码内容重构 📝

1. ExplorationDashboard (原InjuryAnalysisUI)

原功能: 伤员数据统计和图表分析
新功能: 探索任务统计和数据分析

  • 探索区域覆盖率统计
  • 设备工作时长统计
  • 探索效率分析图表
  • 实时任务进度监控

2. MapExplorer (原injurydisiplayui)

原功能: 在地图上显示伤员位置
新功能: 在地图上显示探索信息

  • 显示设备当前位置和轨迹
  • 标记已探索区域
  • 显示兴趣点和目标
  • 实时更新探索进度

3. ExplorationDatabase (原InjuryDatabase)

原功能: 管理伤员记录
新功能: 管理探索任务和数据

  • 探索任务CRUD操作
  • 探索点位数据管理
  • 探索历史记录
  • 统计分析支持

4. MainWindow (原GuidingUI)

原功能: 机器人控制和引导
新功能: 战场探索系统主控制台

  • 统一设备管理界面
  • 探索任务调度
  • 实时状态监控
  • 系统配置管理

实施步骤

Step 1: 备份和准备 🛡️

# 1. 创建备份
cp -r src src_backup
cp -r ui ui_backup
cp -r include include_backup

# 2. 创建新的目录结构
mkdir -p src/{core/{database,services,models},ui/{main,components,dialogs,exploration},utils}
mkdir -p forms/{main,components,dialogs,exploration}

Step 2: 文件移动和重命名 📁

# 移动核心文件
mv src/UAVDatabase.cpp src/core/database/
mv src/DogDatabase.cpp src/core/database/
mv src/guidingui.cpp src/ui/main/MainWindow.cpp
mv src/robotlistdialog.cpp src/ui/dialogs/DeviceDialog.cpp

# 移动UI文件
mv ui/guidingui.ui forms/main/MainWindow.ui
mv ui/robotlistdialog.ui forms/dialogs/DeviceDialog.ui

# 删除injury相关文件
rm src/Injury*.cpp src/injury*.cpp src/moc_Injury*.cpp src/moc_injury*.cpp
rm ui/Injury*.ui ui/injury*.ui
rm include/Injury*.h include/injury*.h

Step 3: 创建新组件 🔧

# 创建新的核心组件
touch src/core/database/{DeviceDatabase,ConnectionManager}.cpp
touch src/core/services/{DeviceService,ExplorationService}.cpp
touch src/core/models/{Device,ExplorationTask}.cpp
touch src/ui/components/{DeviceCard,DeviceListWidget,StatusPanel}.cpp
touch src/ui/exploration/{ExplorationDashboard,MapExplorer}.cpp
touch src/utils/{Logger,ConfigManager}.cpp

Step 4: 更新构建配置 ⚙️

更新 CasualtySightPlus.pro:

# 新的源文件组织
SOURCES += \
    src/main.cpp \
    src/core/database/DeviceDatabase.cpp \
    src/core/database/ConnectionManager.cpp \
    src/core/services/DeviceService.cpp \
    src/core/services/ExplorationService.cpp \
    src/core/models/Device.cpp \
    src/core/models/ExplorationTask.cpp \
    src/ui/main/MainWindow.cpp \
    src/ui/components/DeviceCard.cpp \
    src/ui/components/DeviceListWidget.cpp \
    src/ui/components/StatusPanel.cpp \
    src/ui/dialogs/DeviceDialog.cpp \
    src/ui/exploration/ExplorationDashboard.cpp \
    src/ui/exploration/MapExplorer.cpp \
    src/utils/Logger.cpp \
    src/utils/ConfigManager.cpp

HEADERS += \
    include/core/database/DeviceDatabase.h \
    include/core/database/ConnectionManager.h \
    # ... 其他头文件

FORMS += \
    forms/main/MainWindow.ui \
    forms/components/DeviceCard.ui \
    forms/components/StatusPanel.ui \
    forms/dialogs/DeviceDialog.ui \
    forms/exploration/ExplorationDashboard.ui \
    forms/exploration/MapExplorer.ui

Step 5: 代码内容重构 💻

  1. 更新头文件包含路径
  2. 重命名所有类和方法
  3. 替换injury相关的业务逻辑
  4. 实现新的探索功能

风险控制

1. 分阶段实施

  • 每个步骤完成后进行编译测试
  • 确保每个阶段都有可工作的版本
  • 问题出现时可以快速回退

2. 保持向后兼容

  • 暂时保留原有的数据库视图
  • 重要配置保持兼容性
  • 用户数据不受影响

3. 充分测试

  • 每个重构步骤后进行功能测试
  • 重点测试设备管理功能
  • 验证地图显示正常

预期收益

1. 业务对齐

  • 完全符合"战场探索系统"定位
  • 功能和命名语义化清晰
  • 用户理解成本降低

2. 代码质量

  • 模块化架构,职责清晰
  • 便于维护和扩展
  • 新功能开发效率提升

3. 项目价值

  • 体现系统重构能力
  • 展示架构设计思维
  • 增强学术项目完整性

这个重构计划将彻底解决业务不匹配问题,同时建立清晰的模块化架构,为后续开发奠定良好基础。