Files
Workspace/Docs/Archive/codebase-map-2026-05-23/CONVENTIONS.md
T
cneicy d74c2f08ca feat(packages): 内置 SDK 包并完善 ContextLoader 集成
- 将 ShrinkEventBus、ShrinkDataSaver 及其 EventBus 集成从 gitlink 转为仓库直接维护的完整 UPM 包,补齐运行时、编辑器工具、测试与文档
- 新增 Command 和 Network 的 App 集成组件,支持 ContextLoader 服务发布、可逆注销及 Network Loopback 生命周期管理
- 更新 Starter 与演示组合逻辑,缺失模块时可注册、已有兼容安装器时可覆盖,并补充宿主启动断言
- 升级内部包依赖与 Shared CodeGen 包定义,放宽 Integration.App 包的 Git 忽略规则
- 将独立服务器生成器改为基于已编译程序集的语义扫描,支持 partial、复杂泛型、命名冲突检测及模板 SHA-256 覆写保护
- 新增 Network 语义扫描、模板保护和 App 组件生命周期测试
- 新增真实 UPM 消费工程验证脚本,校验内部版本一致性、程序集加载及 EditMode 测试
- 重构当前架构文档并归档已完成的 Cordis 迁移与旧代码地图
2026-08-18 18:06:34 +08:00

77 lines
3.3 KiB
Markdown

# 代码约定
## 总体风格
- 代码整体偏 Unity 常规 C# 风格,使用 PascalCase 命名类型与公开成员,私有字段使用前导下划线。
- 重要入口类大量使用 `public static class`,例如:
- `Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs`
- `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs`
- `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSettings.cs`
- `Assets/Modules/ShrinkDataSaver/Runtime/MigrationChain.cs`
- 面向使用者暴露简单 API,内部状态则保留在静态字段中。
## 命名约定
- 事件类统一以 `Event` 结尾,见 `Assets/Modules/ShrinkDataSaver.Integration.EventBus/DataSaverEvents.cs`
- 事件参数类统一以 `EventArgs` 结尾,见 `Assets/Modules/ShrinkDataSaver/Runtime/SaveTypes.cs`
- 配置类统一以 `Settings``Options``Config` 结尾。
- 编辑器窗口统一以 `EditorWindow` 结尾,见:
- `Assets/Modules/ShrinkEventBus/Editor/EventBusViewerWindow.cs`
- `Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs`
## 模式约定
- Unity 运行时与编辑器严格分目录、分 asmdef。
- 用 Attribute 表达声明式能力:
- `[EventBusSubscriber]`
- `[EventSubscribe]`
- `[Cancelable]`
- `[HasResult]`
- 用接口做最小抽象,而不是引入完整容器:
- `IStorageProvider`
- `ISaveModule`
- `ISaveModule<T>`
## 空值与语法习惯
- 仓库同时使用普通 C# 空值判断和 Unity 对象真值判断。
- `ShrinkEventBus` 某些文件启用了 `#nullable enable`,例如:
- `Assets/Modules/ShrinkEventBus/Runtime/EventBase.cs`
- `Assets/Modules/ShrinkEventBus/Runtime/ListenerList.cs`
- 但整个仓库并没有统一启用可空引用,说明这是局部使用而非全局规范。
## 日志与注释
- 日志前缀较统一,常见前缀有:
- `[EventBus]`
- `[ShrinkDataSaver]`
- `[ShrinkDataSaver.Integration]`
- 源码注释和用户可见菜单文本原本倾向中文。
- 但当前有多处中文字符串出现乱码,典型位置包括:
- `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs`
- `Assets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs`
- `Assets/Modules/ShrinkDataSaver/README.md`
- `Assets/Modules/ShrinkDataSaver.Integration.EventBus/README.md`
## 错误处理
- 运行时代码多采用“抛异常 + 触发失败事件 + Debug.Log”混合策略。
- 对非关键模块失败通常记录日志后跳过,对关键模块失败则终止保存,见 `Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.cs`
- 异步 fire-and-forget 分支会用统一包装打印异常,见 `Assets/Modules/ShrinkEventBus/Runtime/EventBus.cs`
## 测试约定
- 测试位于 `Assets/Modules/ShrinkDataSaver/Tests`
- 同时使用 `[Test]``[UnityTest]`
- 测试通过 `MockStorageProvider` 隔离文件系统,见 `Assets/Modules/ShrinkDataSaver/Tests/MockStorageProvider.cs`
## 可读性与组织
- 单文件职责通常比较集中,尤其是 Runtime 层。
-`ShrinkSave.cs``ShrinkDataSaverEditorWindow.cs` 体量偏大,已经承担多个职责。
## 结论
- 当前代码约定的关键词是:静态门面、Attribute 驱动、asmdef 分层、中文日志、最小抽象。
- 如果后续继续扩展,最需要先统一的是编码、可空规范和部分大文件拆分标准。