NavisworksTransport/doc/working/项目文件组织规范_20250817.md

339 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目文件组织规范
**文档版本**: 1.0
**创建日期**: 2025-08-17
**适用范围**: NavisworksTransport项目开发代理
## 1. 概述
本文档规定了NavisworksTransport项目中各类文件的标准放置位置、命名约定和组织原则确保所有开发代理遵循统一的文件组织标准提高项目的可维护性和协作效率。
## 2. 标准目录结构
```
NavisworksTransport/
├── src/ # 源代码目录
│ ├── Core/ # 核心功能模块
│ ├── UI/ # 用户界面模块
│ ├── PathPlanning/ # 路径规划模块
│ ├── Commands/ # 命令模式实现
│ ├── Utils/ # 工具类库
│ ├── Resources/ # 资源文件
│ └── Legacy/ # 遗留代码(仅作参考)
├── tests/ # 测试文件目录
│ ├── Unit/ # 单元测试
│ ├── Integration/ # 集成测试
│ └── Performance/ # 性能测试
├── doc/ # 文档目录
│ ├── working/ # 工作文档和开发过程记录
│ ├── guide/ # 使用指南和技术文档
│ ├── design/ # 设计文档
│ ├── requirement/ # 需求文档
│ └── migration/ # 迁移文档
├── Properties/ # 项目属性文件
└── 项目根目录文件 # 配置文件、解决方案文件等
```
## 3. 文件放置规则
### 3.1 源代码文件 (`src/`)
**放置原则**: 按功能模块组织,每个文件都应有明确的职责
**规则详述**:
- **核心功能**: `src/Core/` - 插件主体、管理器类、数据模型
- **用户界面**: `src/UI/` - WPF控件、WinForms对话框、视图模型
- **路径规划**: `src/PathPlanning/` - 算法实现、数据结构
- **命令模式**: `src/Commands/` - 命令接口、执行器、具体命令
- **工具类**: `src/Utils/` - 通用工具、转换器、辅助类
- **资源文件**: `src/Resources/` - 图标、字符串资源、配置文件
**禁止内容**:
- ❌ 测试文件(应放在 `tests/` 目录)
- ❌ 使用示例代码(应放在 `doc/working/` 目录)
- ❌ README文件应放在 `doc/working/` 目录)
- ❌ 临时调试代码
### 3.2 测试文件 (`tests/`)
**放置原则**: 所有测试相关文件统一管理
**文件类型**:
- **单元测试**: `tests/Unit/` - 单个类或方法的测试
- **集成测试**: `tests/Integration/` - 模块间协作测试
- **性能测试**: `tests/Performance/` - 性能基准测试
- **UI测试**: `tests/UI/` - 界面功能测试
**命名约定**:
- 单元测试: `{ClassName}Tests.cs`
- 集成测试: `{ModuleName}IntegrationTest.cs`
- 性能测试: `{FeatureName}PerformanceTest.cs`
**示例**:
```
tests/
├── Unit/
│ ├── PathPlanningManagerTests.cs
│ ├── ViewModelBaseTests.cs
│ └── CoordinateConverterTests.cs
├── Integration/
│ ├── CommandFrameworkIntegrationTest.cs
│ ├── ClashDetectiveIntegrationTest.cs
│ └── UIStateManagerIntegrationTest.cs
└── Performance/
└── PathfindingPerformanceTest.cs
```
### 3.3 工作文档 (`doc/working/`)
**放置原则**: 开发过程中的所有文档和说明
**内容类型**:
- **开发任务**: 任务清单、进度报告、完成总结
- **技术方案**: 实现方案、架构设计、问题解决
- **使用示例**: 代码示例、使用说明、最佳实践
- **调试记录**: 问题排查、错误修复、性能优化
**命名约定**:
- 任务文档: `{功能名称}_{任务类型}_{日期}.md`
- 技术方案: `{方案名称}_技术设计方案_{日期}.md`
- 问题记录: `{问题描述}_修复报告_{日期}.md`
### 3.4 技术文档 (`doc/guide/`)
**放置原则**: 稳定的技术指南和参考文档
**内容类型**:
- **开发指南**: 开发环境搭建、编码规范
- **API文档**: 接口说明、使用方法
- **故障排除**: 常见问题解决方案
- **最佳实践**: 代码模式、设计原则
## 4. 文件命名约定
### 4.1 通用命名规则
- **语言**: 中文文档使用中文命名,代码文件使用英文命名
- **格式**: 无空格,使用下划线分隔,避免特殊字符
- **日期**: 使用 YYYYMMDD 格式
- **版本**: 使用语义化版本号(如适用)
### 4.2 具体命名规范
**源代码文件**:
```
类文件: {ClassName}.cs
接口文件: I{InterfaceName}.cs
管理器类: {ModuleName}Manager.cs
工具类: {FeatureName}Helper.cs 或 {FeatureName}Utility.cs
```
**测试文件**:
```
单元测试: {ClassName}Tests.cs
集成测试: {ModuleName}IntegrationTest.cs
示例代码: {FeatureName}Example.cs
```
**文档文件**:
```
工作文档: {主题}_{类型}_{日期}.md
技术指南: {主题}_guide.md
设计文档: {主题}_design.md
```
## 5. 开发代理遵循指南
### 5.1 文件创建检查清单
在创建新文件时,请按以下清单检查:
- [ ] **确定文件类型**: 源代码、测试、文档、配置
- [ ] **选择正确目录**: 根据文件功能选择标准目录
- [ ] **遵循命名约定**: 使用标准命名格式
- [ ] **检查文件职责**: 确保文件功能单一、职责明确
- [ ] **避免重复放置**: 检查是否已存在类似文件
### 5.2 代码文件组织原则
**单一职责原则**:
- 每个文件应专注于单一功能
- 避免在一个文件中混合多种类型的代码
**模块化原则**:
- 相关功能的文件应放在同一目录下
- 跨模块依赖应最小化
**可维护性原则**:
- 使用清晰的文件和目录命名
- 添加适当的注释和文档
### 5.3 禁止的文件放置模式
**严格禁止**:
- ❌ 在 `src/` 目录下放置测试文件
- ❌ 在源代码目录下放置README或使用说明
- ❌ 在项目根目录下创建临时文件
- ❌ 在 `Legacy/` 目录下添加新代码
**强烈不建议**:
- 🚫 在不相关的模块目录下放置文件
- 🚫 使用含糊不清的文件名
- 🚫 创建单一功能的深层目录结构
## 6. 文件迁移指导
### 6.1 当前需要迁移的文件
根据项目现状,以下文件需要重新组织:
**测试文件迁移**:
```bash
# 需要从源码目录迁移到tests目录的文件
src/Commands/CommandFrameworkTest.cs → tests/Integration/CommandFrameworkIntegrationTest.cs
src/Commands/CommandPatternIntegrationTest.cs → tests/Integration/CommandPatternIntegrationTest.cs
src/Core/ClashDetectiveIntegrationTest.cs → tests/Integration/ClashDetectiveIntegrationTest.cs
src/UI/WPF/ViewModels/ViewModelBaseTest.cs → tests/Unit/ViewModelBaseTests.cs
```
**示例文件迁移**:
```bash
# 需要从源码目录迁移到文档目录的文件
src/Commands/README.md → doc/working/Commands模块使用说明_20250817.md
src/Core/UIStateManagerExample.cs → doc/working/UIStateManager使用示例_20250817.md
src/UI/WPF/Collections/ThreadSafeObservableCollectionUsageExample.cs → doc/working/ThreadSafeObservableCollection使用示例_20250817.md
```
### 6.2 迁移步骤
**步骤1: 备份当前文件**
```bash
# 确保git状态清洁
git status
git add .
git commit -m "迁移前备份"
```
**步骤2: 创建目标目录结构**
```bash
# 创建测试目录结构
mkdir tests/Unit
mkdir tests/Integration
mkdir tests/Performance
mkdir tests/UI
```
**步骤3: 移动文件**
```bash
# 使用git mv保持版本历史
git mv src/Commands/CommandFrameworkTest.cs tests/Integration/CommandFrameworkIntegrationTest.cs
# 重复其他文件...
```
**步骤4: 更新引用和导入**
- 更新命名空间
- 修复相对路径引用
- 更新项目文件引用
**步骤5: 验证迁移结果**
- 编译项目确保无错误
- 运行测试确保功能正常
- 提交迁移变更
## 7. 质量检查清单
### 7.1 日常检查项目
**文件组织检查**:
- [ ] 所有测试文件都在 `tests/` 目录下
- [ ] 源代码文件按模块正确分类
- [ ] 文档文件在相应的 `doc/` 子目录下
- [ ] 没有在源代码目录下的README或示例文件
**命名规范检查**:
- [ ] 文件名符合命名约定
- [ ] 目录结构清晰合理
- [ ] 避免使用临时或模糊的命名
**代码质量检查**:
- [ ] 每个文件职责单一
- [ ] 命名空间与目录结构一致
- [ ] 适当的注释和文档
### 7.2 违规文件检测脚本
可以使用以下PowerShell脚本检测违规文件
```powershell
# 检测源码目录下的测试文件
Get-ChildItem -Path "src" -Recurse -Name "*Test*.cs" | ForEach-Object {
Write-Warning "发现测试文件在源码目录: $_"
}
# 检测源码目录下的README文件
Get-ChildItem -Path "src" -Recurse -Name "README.*" | ForEach-Object {
Write-Warning "发现README文件在源码目录: $_"
}
# 检测源码目录下的示例文件
Get-ChildItem -Path "src" -Recurse -Name "*Example*.cs" | ForEach-Object {
Write-Warning "发现示例文件在源码目录: $_"
}
```
### 7.3 项目结构验证
**必要目录检查**:
- [ ] `src/` 目录存在且包含核心模块
- [ ] `tests/` 目录存在且有子分类
- [ ] `doc/working/` 目录存在且有当前文档
- [ ] 项目根目录整洁,无临时文件
**目录内容检查**:
- [ ] `src/` 下只有源代码文件
- [ ] `tests/` 下只有测试相关文件
- [ ] `doc/` 下按类型正确分类
## 8. 总结
遵循本规范可以确保:
1. **项目结构清晰**: 便于新成员快速理解项目组织
2. **协作效率提升**: 减少因文件位置混乱导致的沟通成本
3. **维护成本降低**: 标准化的文件组织便于长期维护
4. **代码质量提升**: 强制的职责分离有助于代码质量
**重要提醒**: 所有开发代理在创建新文件或修改现有结构时,都必须严格遵循本规范。如有疑问,请参考本文档或向项目负责人咨询。
---
**文档维护**: 本文档将根据项目发展需要进行更新,所有变更将在版本历史中记录。