- 将 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 迁移与旧代码地图
3.3 KiB
3.3 KiB
代码约定
总体风格
- 代码整体偏 Unity 常规 C# 风格,使用 PascalCase 命名类型与公开成员,私有字段使用前导下划线。
- 重要入口类大量使用
public static class,例如:Assets/Modules/ShrinkEventBus/Runtime/EventBus.csAssets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.csAssets/Modules/ShrinkDataSaver/Runtime/ShrinkSettings.csAssets/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.csAssets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.cs
模式约定
- Unity 运行时与编辑器严格分目录、分 asmdef。
- 用 Attribute 表达声明式能力:
[EventBusSubscriber][EventSubscribe][Cancelable][HasResult]
- 用接口做最小抽象,而不是引入完整容器:
IStorageProviderISaveModuleISaveModule<T>
空值与语法习惯
- 仓库同时使用普通 C# 空值判断和 Unity 对象真值判断。
ShrinkEventBus某些文件启用了#nullable enable,例如:Assets/Modules/ShrinkEventBus/Runtime/EventBase.csAssets/Modules/ShrinkEventBus/Runtime/ListenerList.cs
- 但整个仓库并没有统一启用可空引用,说明这是局部使用而非全局规范。
日志与注释
- 日志前缀较统一,常见前缀有:
[EventBus][ShrinkDataSaver][ShrinkDataSaver.Integration]
- 源码注释和用户可见菜单文本原本倾向中文。
- 但当前有多处中文字符串出现乱码,典型位置包括:
Assets/Modules/ShrinkDataSaver/Runtime/ShrinkSave.csAssets/Modules/ShrinkDataSaver/Editor/ShrinkDataSaverEditorWindow.csAssets/Modules/ShrinkDataSaver/README.mdAssets/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 分层、中文日志、最小抽象。
- 如果后续继续扩展,最需要先统一的是编码、可空规范和部分大文件拆分标准。