耦合性 V4

07/132 浏览

当前游戏耦合性评估

结论:低到中低耦合
经过多轮拆分后,原来的高入度 Facade / shim 基本已经清空业务依赖,当前主要热点已经转为“细粒度状态模块”和“流程编排模块”,结构比最初健康很多。
horizontal linehorizontal line

1. 当前核心指标

text
Lua 文件数: 200 内部 require 边数: 615 外部 require 引用: 79 平均内部出度: 3.08 循环节点: 0
关键结论:
text
循环依赖: 0
这是最重要的健康指标。说明目前虽然文件更多、边数略增,但没有形成结构性环依赖。
horizontal linehorizontal line

2. 已清空的旧 Facade / 聚合层

当前这些模块都已经没有业务入度:
text
Pages.纸上状态域.战斗 incoming=0 Pages.纸上状态域.家园 incoming=0 Pages.纸上状态域.进度 incoming=0 Pages.纸上状态域.背包 incoming=0 Pages.纸上状态域.界面 incoming=0 Data.Store incoming=0 Pages.怪物工坊.上下文 incoming=0 Pages.纸上障碍 incoming=0 Pages.怪物工坊.战斗机制 incoming=0
这说明之前的主要耦合热点已经被有效拆解。
App.纸上存档用例 目前还有:
text
App.纸上存档用例 incoming=1
这个入度来自兼容入口 Pages.纸上存档.lua,不是业务调用方,风险很低。
horizontal linehorizontal line

3. 当前 Top 入度热点

text
30 Pages.纸上状态域.战斗实体 25 Pages.纸上状态域.进度页码 22 Pages.纸上状态域.家园视图 21 Pages.纸上状态 16 Pages.纸上状态域.战斗资源 15 Pages.纸上状态域.战斗集合 13 Pages.纸上状态域.背包数据 12 App.光标服务 12 Pages.纸上战斗域.轮廓 12 Pages.怪物工坊.上下文域.显示 12 Pages.纸上状态域.公开安全屋 11 Network.数据代理 11 App.纸上存档.背包进度 11 Network.共享定义 10 Pages.纸上状态域.界面绘制

解读

这些热点大多已经不是“大而全 Facade”,而是合理的细粒度基础模块:
  • 战斗实体
  • 进度页码
  • 家园视图
  • 战斗资源
  • 战斗集合
  • 背包数据
  • 界面绘制
这是可接受的中心化:它们是“单职责状态读写入口”。
horizontal linehorizontal line

4. 当前 Top 出度热点

text
19 Pages.怪物工坊.游戏循环域.游戏结束流程 16 Pages.纸上战斗循环.玩家系统 14 Pages.纸上战斗循环.结算系统 13 Pages.怪物工坊.游戏循环域.战斗循环流程 12 Pages.怪物工坊.合成面板 12 Pages.纸上关卡域.休整视图 11 Pages.造兵 11 Pages.怪物工坊.渲染 11 Pages.纸上关卡域.页面推进 11 Pages.纸上战斗循环.弹体系统 10 Pages.纸上障碍 10 Pages.怪物工坊.游戏循环 10 Pages.纸上关卡域.公开失败休整 10 Pages.纸上建家域.保存流程 10 Pages.怪物工坊.入口域.导航绑定 10 Pages.怪物工坊.入口域.生命周期 10 Pages.怪物工坊.插件域.界面同步

解读

当前更值得关注的不是“入度高”,而是这些流程/编排模块出度高
这类模块通常会同时依赖:
  • 状态模块
  • UI 模块
  • 存档模块
  • 音频模块
  • 关卡规则
  • 上下文显示
  • 战斗机制
这在游戏流程编排中是正常的,但如果继续优化,可以把这些模块里的“规则判断 / 结算 / UI 展示 / 存档副作用”继续拆成 use case。
horizontal linehorizontal line

5. 跨域依赖情况

跨域依赖最多的是:
text
68 Pages.怪物工坊 -> Pages.纸上状态域 23 Pages.纸上关卡域 -> Pages.纸上状态域 23 Pages.纸上建家域 -> Pages.纸上状态域 23 Pages.纸上战斗循环 -> Pages.纸上状态域 21 Pages.纸上状态域 -> Pages.纸上状态 15 Pages.纸上战斗循环 -> Pages.怪物工坊 13 Pages.纸上障碍域 -> Pages.纸上状态域 9 Pages.纸上战斗域 -> Pages.纸上状态域 9 Pages.怪物工坊 -> Pages.纸上战斗域

解读

项目目前的主要耦合形态是:
text
页面/流程模块 -> 状态域模块
这是比之前更健康的结构。
Pages.纸上状态 incoming=21 也主要来自状态域内部:
text
Pages.纸上状态域 -> Pages.纸上状态 = 21
这说明底层总状态仍然集中,但它已经被状态域模块包起来,业务层基本没有直接访问它。
horizontal linehorizontal line

6. 当前耦合等级判断

正面指标

text
cycle_nodes=0 平均出度=3.08 旧 Facade / shim 基本 incoming=0 状态域已拆成多个单职责模块 业务层直接依赖底层 State 的情况基本消除

剩余问题

text
流程编排模块出度较高 Pages.怪物工坊 -> Pages.纸上状态域 跨域边仍较多 Pages.纸上战斗循环 -> Pages.怪物工坊 仍有 15 条跨域边
所以当前不是“紧耦合代码堆”,而是:
text
状态域结构较清晰 流程层仍偏编排中心化
综合评估:
text
当前耦合性:低到中低 维护风险:中低 循环风险:低 下一步优化价值:主要集中在流程编排层
horizontal linehorizontal line

7. 后续优化建议

如果继续降低耦合,建议不要再优先拆状态 Facade,因为主要 Facade 已清空。下一步建议处理这些高出度流程模块

优先级 1:Pages.怪物工坊.游戏循环域.游戏结束流程

text
outgoing=19
它目前是最高出度模块,可能混合了:
  • 阵亡保底
  • 蓝图保存
  • 背包保存
  • 排行提交
  • GameOver UI
  • 公开安全屋失败分支
  • 页面跳转
建议拆成:
text
游戏结束域/阵亡保底.lua 游戏结束域/公开失败.lua 游戏结束域/重开流程.lua 游戏结束域/游戏结束展示.lua
horizontal linehorizontal line

优先级 2:Pages.纸上战斗循环.玩家系统

text
outgoing=16
可能混合了:
  • 玩家移动
  • 工作台检测
  • 绘制模式处理
  • 开火输入
  • 移动端输入
  • 地形碰撞
建议拆成:
text
玩家系统域/移动.lua 玩家系统域/绘制交互.lua 玩家系统域/工作台检测.lua 玩家系统域/射击输入.lua
horizontal linehorizontal line

优先级 3:Pages.纸上战斗循环.结算系统

text
outgoing=14
可拆为:
text
结算域/通关检测.lua 结算域/清场阶段.lua 结算域/安全屋生成.lua 结算域/僵持失败.lua
horizontal linehorizontal line

优先级 4:跨域依赖收敛

重点关注:
text
Pages.纸上战斗循环 -> Pages.怪物工坊 = 15 Pages.怪物工坊 -> Pages.纸上状态域 = 68
可以逐步通过更明确的接口层减少跨域直连。
horizontal linehorizontal line

总结

当前项目已经从最初的“多个大 Facade 聚合”演进到:
text
状态域细粒度模块化 无循环依赖 兼容 Facade 清空入度 流程层承担主要编排
结构已经比较健康。继续优化的话,重点应从“拆状态”转为“拆高出度流程编排模块”。
4