# 项目结构重构文档

## 概述

本文档记录了MyQrCode应用的项目结构重构过程，将相关功能的view按类型分组到同一个组中，提高代码的可维护性和可读性。

## 重构前的结构

```
MyQrCode/Views/
├── Components/          # 通用组件
├── ScannerView/         # 扫描相关（旧结构）
├── CreateCodeView.swift
├── CreateQRCodeView.swift
├── QRCodeStyleView.swift
├── CodeContentInputView.swift
├── CodeTypeSelectionView.swift
├── ImageComposerView.swift
├── HistoryView.swift
├── QRCodeDetailView.swift
├── QRCodeSavedView.swift
├── BarcodeDetailView.swift
├── BarcodePreviewView.swift
├── BarcodeCharacterHintView.swift
├── BarcodeValidationInfoView.swift
├── SettingsView.swift
├── AppPermissionsView.swift
├── PrivacyPolicyView.swift
├── LaunchScreenView.swift
└── 其他文件...
```

## 重构后的结构

```
MyQrCode/
├── Core/               # 核心文件
│   ├── MyQrCodeApp.swift
│   └── ContentView.swift
├── Managers/           # 管理器文件
│   ├── LanguageManager.swift
│   └── Logger.swift
├── Views/              # 视图文件
│   ├── Scanner/        # 扫描相关功能
│   │   ├── ScannerView.swift
│   │   ├── ScannerViewModel.swift
│   │   ├── CameraPermissionView.swift
│   │   ├── CameraPreviewView.swift
│   │   ├── ScanningOverlayView.swift
│   │   ├── CodePositionOverlay.swift
│   │   ├── ScanningLineView.swift
│   │   ├── Models.swift
│   │   └── TestAutoSelectButton.swift
│   ├── Generator/      # 生成相关功能
│   │   ├── CreateCodeView.swift
│   │   ├── CreateQRCodeView.swift
│   │   ├── QRCodeStyleView.swift
│   │   ├── CodeContentInputView.swift
│   │   ├── CodeTypeSelectionView.swift
│   │   └── ImageComposerView.swift
│   ├── History/        # 历史记录相关功能
│   │   ├── HistoryView.swift
│   │   ├── QRCodeDetailView.swift
│   │   ├── QRCodeSavedView.swift
│   │   ├── BarcodeDetailView.swift
│   │   ├── BarcodePreviewView.swift
│   │   ├── BarcodeCharacterHintView.swift
│   │   └── BarcodeValidationInfoView.swift
│   ├── Settings/       # 设置相关功能
│   │   ├── SettingsView.swift
│   │   ├── AppPermissionsView.swift
│   │   ├── PrivacyPolicyView.swift
│   │   └── LanguageSettingsView.swift
│   ├── Components/     # 通用组件
│   │   ├── CardView.swift
│   │   ├── FormView.swift
│   │   ├── InputFieldView.swift
│   │   ├── ListView.swift
│   │   ├── PickerView.swift
│   │   ├── QRCodePreviewView.swift
│   │   ├── ValidationView.swift
│   │   ├── UtilityFunctions.swift
│   │   ├── InputComponentFactory.swift
│   │   ├── InputTitleView.swift
│   │   ├── InputHintView.swift
│   │   ├── KeyboardToolbarView.swift
│   │   ├── TextInputView.swift
│   │   ├── TextEditorView.swift
│   │   ├── URLInputView.swift
│   │   ├── EmailInputView.swift
│   │   ├── PhoneInputView.swift
│   │   ├── ContactInputView.swift
│   │   ├── LocationInputView.swift
│   │   ├── WiFiInputView.swift
│   │   ├── SocialInputView.swift
│   │   ├── CalendarInputView.swift
│   │   └── DatePickerView.swift
│   └── Utils/          # 工具类
│       └── LaunchScreenView.swift
├── Models/             # 数据模型
├── Utils/              # 工具类
├── Resources/          # 资源文件
├── Assets.xcassets/    # 资源文件
├── Docs/               # 文档文件
│   ├── MULTILINGUAL_FIX_SUMMARY.md
│   └── CODE_OPTIMIZATION_SUMMARY.md
├── Info.plist          # 应用配置
└── *.lproj/           # 本地化文件
```

## 分组原则

### 1. Core组
**功能**: 应用核心文件
**包含文件**:
- `MyQrCodeApp.swift` - 应用入口点
- `ContentView.swift` - 主内容视图

### 2. Managers组
**功能**: 应用管理器
**包含文件**:
- `LanguageManager.swift` - 语言管理器
- `Logger.swift` - 日志管理器

### 3. Views组
**功能**: 所有视图文件，按功能进一步分组

#### 3.1 Scanner组
**功能**: 扫描二维码和条形码
**包含文件**:
- `ScannerView.swift` - 主扫描界面
- `ScannerViewModel.swift` - 扫描逻辑管理
- `CameraPermissionView.swift` - 相机权限界面
- `CameraPreviewView.swift` - 相机预览界面
- `ScanningOverlayView.swift` - 扫描覆盖层
- `CodePositionOverlay.swift` - 代码位置覆盖层
- `ScanningLineView.swift` - 扫描线动画
- `Models.swift` - 扫描相关数据模型
- `TestAutoSelectButton.swift` - 测试自动选择按钮

#### 3.2 Generator组
**功能**: 生成二维码和条形码
**包含文件**:
- `CreateCodeView.swift` - 创建代码主界面
- `CreateQRCodeView.swift` - 创建二维码界面
- `QRCodeStyleView.swift` - 二维码样式选择界面
- `CodeContentInputView.swift` - 代码内容输入界面
- `CodeTypeSelectionView.swift` - 代码类型选择界面
- `ImageComposerView.swift` - 图片合成界面

#### 3.3 History组
**功能**: 历史记录管理
**包含文件**:
- `HistoryView.swift` - 历史记录主界面
- `QRCodeDetailView.swift` - 二维码详情界面
- `QRCodeSavedView.swift` - 二维码保存界面
- `BarcodeDetailView.swift` - 条形码详情界面
- `BarcodePreviewView.swift` - 条形码预览界面
- `BarcodeCharacterHintView.swift` - 条形码字符提示界面
- `BarcodeValidationInfoView.swift` - 条形码验证信息界面

#### 3.4 Settings组
**功能**: 应用设置
**包含文件**:
- `SettingsView.swift` - 设置主界面
- `AppPermissionsView.swift` - 应用权限界面
- `PrivacyPolicyView.swift` - 隐私政策界面
- `LanguageSettingsView.swift` - 语言设置界面

#### 3.5 Components组
**功能**: 通用UI组件
**包含文件**: 所有可复用的UI组件

#### 3.6 Utils组
**功能**: 视图工具类
**包含文件**:
- `LaunchScreenView.swift` - 启动页面

### 4. 其他组
- **Models**: 数据模型文件
- **Utils**: 工具类文件
- **Resources**: 资源文件
- **Docs**: 文档文件
- **Assets.xcassets**: 资源文件
- **Info.plist**: 应用配置
- ***.lproj**: 本地化文件

## 重构优势

### 1. 提高可维护性
- **功能分组**: 相关功能文件集中在一起，便于查找和维护
- **职责清晰**: 每个组都有明确的职责范围
- **减少耦合**: 不同功能组之间的依赖关系更清晰

### 2. 提高可读性
- **结构清晰**: 新开发者可以快速理解项目结构
- **导航便利**: 在IDE中可以更容易地导航到相关文件
- **文档化**: 通过文件夹结构自动形成文档

### 3. 便于扩展
- **模块化**: 每个功能组可以独立开发和测试
- **可复用**: 通用组件可以在不同功能组中复用
- **可扩展**: 新增功能时可以很容易地确定放置位置

## 技术实现

### 文件移动
使用命令行工具进行文件移动：
```bash
# 创建新的目录结构
mkdir -p MyQrCode/Core
mkdir -p MyQrCode/Managers
mkdir -p MyQrCode/Views/{Scanner,Generator,History,Settings,Utils}
mkdir -p MyQrCode/Docs

# 移动核心文件
mv MyQrCode/MyQrCodeApp.swift MyQrCode/Core/
mv MyQrCode/ContentView.swift MyQrCode/Core/

# 移动管理器文件
mv MyQrCode/LanguageManager.swift MyQrCode/Managers/
mv MyQrCode/Logger.swift MyQrCode/Managers/

# 移动视图文件
mv MyQrCode/Views/ScannerView/* MyQrCode/Views/Scanner/
mv MyQrCode/Views/CreateCodeView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/CreateQRCodeView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/QRCodeStyleView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/CodeContentInputView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/CodeTypeSelectionView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/ImageComposerView.swift MyQrCode/Views/Generator/
mv MyQrCode/Views/HistoryView.swift MyQrCode/Views/History/
mv MyQrCode/Views/QRCodeDetailView.swift MyQrCode/Views/History/
mv MyQrCode/Views/QRCodeSavedView.swift MyQrCode/Views/History/
mv MyQrCode/Views/BarcodeDetailView.swift MyQrCode/Views/History/
mv MyQrCode/Views/BarcodePreviewView.swift MyQrCode/Views/History/
mv MyQrCode/Views/BarcodeCharacterHintView.swift MyQrCode/Views/History/
mv MyQrCode/Views/BarcodeValidationInfoView.swift MyQrCode/Views/History/
mv MyQrCode/Views/SettingsView.swift MyQrCode/Views/Settings/
mv MyQrCode/Views/AppPermissionsView.swift MyQrCode/Views/Settings/
mv MyQrCode/Views/PrivacyPolicyView.swift MyQrCode/Views/Settings/
mv MyQrCode/LanguageSettingsView.swift MyQrCode/Views/Settings/
mv MyQrCode/Views/LaunchScreenView.swift MyQrCode/Views/Utils/

# 移动文档文件
mv MyQrCode/MULTILINGUAL_FIX_SUMMARY.md MyQrCode/Docs/
mv MyQrCode/CODE_OPTIMIZATION_SUMMARY.md MyQrCode/Docs/
```

### 引用更新
由于Swift的模块系统会自动解析文件路径，大部分引用不需要手动更新。但为了确保项目结构清晰，建议：

1. **保持import语句简洁**: 不需要显式import每个子目录
2. **使用相对路径**: Swift会自动处理文件引用
3. **更新文档**: 确保文档反映新的项目结构

## 验证步骤

### 1. 编译验证
```bash
xcodebuild -project MyQrCode.xcodeproj -scheme MyQrCode -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5' build
```

### 2. 功能测试
- 扫描功能正常工作
- 生成功能正常工作
- 历史记录功能正常工作
- 设置功能正常工作
- 启动页面正常显示

### 3. 导航测试
- 所有NavigationLink正常工作
- 页面跳转无错误
- 返回功能正常

## 总结

通过这次项目结构重构，MyQrCode应用获得了：

- **更清晰的项目结构**: 按功能分组，便于理解和维护
- **更好的代码组织**: 相关文件集中，减少查找时间
- **更高的可扩展性**: 新功能可以很容易地集成到现有结构中
- **更好的团队协作**: 开发者可以快速定位相关代码

这种结构化的组织方式为项目的长期维护和扩展奠定了良好的基础。
