# 项目结构重构文档 ## 概述 本文档记录了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应用获得了: - **更清晰的项目结构**: 按功能分组,便于理解和维护 - **更好的代码组织**: 相关文件集中,减少查找时间 - **更高的可扩展性**: 新功能可以很容易地集成到现有结构中 - **更好的团队协作**: 开发者可以快速定位相关代码 这种结构化的组织方式为项目的长期维护和扩展奠定了良好的基础。