EDD 评估标准文档
大约 4 分钟
Title
副作用驱动设计(EDD)评估标准文档
一、评估目的
本标准用于系统性评估使用 EDD(Effect-Driven Design)方法构建系统时的整体开发质量、结构表现、团队协作效率与可维护性,并与传统架构(如 MVC、DDD)进行对比分析。
该评估体系可用于:
- 架构选型前的决策辅助
- 项目试点后的复盘评估
- 构建自动化代码生成框架前的成熟度判定
二、评估维度总览
| 类别 | 维度名称 | 评估对象 |
|---|---|---|
| 开发效率 | usecase 构建速度副作用处理复杂度 | 项目整体 & 单个功能开发过程 |
| 架构结构 | 模块边界清晰度副作用封装结构usecase聚合能力 | 模块代码组织、trait与event关系图 |
| 可测试性 | usecase 测试便利性副作用 mock 难度逻辑可观测性 | 单元测试覆盖率、测试代码复杂度 |
| 可演进性 | 新增行为/副作用代价重构路径稳定性支持复杂变更能力 | 版本迭代中usecase调整记录 |
| 对比适配 | 与DDD的概念重叠度替代或互补能力 | 概念抽象对照分析 |
三、评估维度详解
1. usecase 构建效率
| 指标 | 描述 | 数据来源 |
|---|---|---|
| 平均 usecase 开发时间 | 从需求明确到功能完成 | 人工记录、git 变更分析 |
| 副作用结构构建成本 | 定义 trait / event / orchestrator 所需时间 | 模板/样例比对 |
| 重复 usecase 重用性 | 相似 usecase 的代码重用能力 | 模板使用次数 |
2. 模块结构清晰度
| 指标 | 描述 | 评估方式 |
|---|---|---|
| 模块边界稳定性 | 模块之间依赖是否单向、稳定 | 依赖图分析工具(cargo-depgraph) |
| 副作用组织方式 | 是否统一封装在 trait / event 层 | 架构图/代码结构评审 |
| usecase 聚合能力 | 是否支持一个 usecase 同时组合多种逻辑/副作用 | 文件变更范围分析 |
3. 可测试性评估
| 指标 | 描述 | 测量方式 |
|---|---|---|
| 单元测试可覆盖率 | 纯 usecase 的函数是否可测试 | 测试覆盖报告 |
| 副作用隔离程度 | trait 是否易于 mock,mock是否可替换 | mock 使用案例 + 替代比例 |
| 可观测性 | usecase 执行是否可记录事件流 | 日志系统、event回放日志数量 |
4. 可维护性与演进性
| 指标 | 描述 | 数据来源 |
|---|---|---|
| 新增副作用插入成本 | 是否需大规模重构 | 文件影响范围分析 |
| 逻辑变更影响面 | 修改 usecase 是否涉及多个模块 | git diff / 修改文件数对比 |
| usecase 自解释性 | 是否一目了然流程控制结构 | 新人理解效率调查 / 代码审阅反馈 |
5. 架构对比与互通性
| 指标 | 描述 | 测试方式 |
|---|---|---|
| 与 DDD 聚合模型对接性 | 是否可兼容使用 DDD 的实体/聚合概念 | 架构共建项目分析 |
| 替代传统 service 模式能力 | 是否可以替代 Service Layer + Repository 模式 | usecase 替换量统计 |
| 概念抽象重合度 | 与 DDD 的 entity/value object/command/event 对应关系 | 抽象对照图 + 开发反馈分析 |
四、评分量化标准
每一维度建议评分标准:
- 1 = 极差,不可维护或使用
- 3 = 可用,但需要大量人为干预
- 5 = 中等水平,可支撑中型项目
- 7 = 优秀,结构明显优于常规方法
- 10 = 极佳,具备推广框架/DSL的潜力
五、评估推荐流程
- 明确 usecase / 功能边界
- 建立代码基线 + 结构快照(文件结构 / 架构图)
- 按维度打分,人工记录用时、影响范围等指标
- 结合测试与 mock 情况记录“副作用调度复杂度”
- 最终形成项目/架构评分表 + 对比报告
六、使用建议与扩展方向
该标准可作为以下场景中的基准参考体系:
- 架构试点方案评估(EDD vs DDD)
- DSL 驱动 usecase 建模系统的测试反馈系统
- 大型系统副作用隔离性与可维护性跟踪工具
- 自动生成 usecase + orchestrator 框架输出规范
七、结语
副作用是所有复杂系统的本质挑战,而副作用的组织与治理能力正是现代架构设计的分水岭。该评估体系帮助我们用结构化方式分析副作用组织能力与业务可演进性,为进一步 DSL 化与代码自动化提供基准与可量化支撑。