耦合性 V3

07/12
当前耦合性已经从“中低耦合”进一步改善到:
低到中低耦合;核心玩法聚合直连基本消除,剩余主要是状态 Facade 和数据 Store 的中心化耦合。

量化结果

只读扫描 scripts/
text
Lua 文件数:175 内部 require 边数:534 循环依赖数:0
关键聚合模块入度:
text
Pages.纸上障碍 incoming = 0 Pages.怪物工坊.战斗机制 incoming = 0 Pages.纸上战斗 incoming = 0 Pages.纸上关卡 incoming = 0 Pages.纸上建家 incoming = 0 Pages.怪物工坊 incoming = 0
这说明前两轮解耦是有效的:业务代码已经不再直接依赖这些“大聚合模块”。

当前做得好的部分

1. 大聚合模块直连已清零

当前这些模块不再作为业务依赖中心:
  • Pages.纸上障碍
  • Pages.怪物工坊.战斗机制
  • Pages.纸上战斗
  • Pages.纸上关卡
  • Pages.纸上建家
  • Pages.怪物工坊
尤其是刚处理完的两个热点:
text
Pages.纸上障碍 incoming = 0 Pages.怪物工坊.战斗机制 incoming = 0
现在调用侧已经转向更细模块,例如:
  • Pages.纸上障碍域.地形几何
  • Pages.纸上障碍域.生成器
  • Pages.纸上障碍域.命中处理
  • Pages.纸上障碍域.绘制
  • Pages.怪物工坊.战斗机制域.炮塔机制
  • Pages.怪物工坊.战斗机制域.地雷机制
  • Pages.怪物工坊.战斗机制域.墙体机制
  • Pages.怪物工坊.战斗机制域.命中机制
  • Pages.怪物工坊.战斗机制域.玩家机制
  • Pages.怪物工坊.战斗机制域.挑战状态
  • Pages.怪物工坊.战斗音频

2. 循环依赖为 0

text
cycle_count = 0
这是很重要的结构健康指标。说明当前拆分虽然更细,但没有制造模块环。

3. 战斗机制已变成“域模块接线”结构

Pages.怪物工坊.战斗机制 不再被业务侧直接引用。
现在实际业务依赖集中在这些更小职责模块上:
text
Pages.怪物工坊.战斗音频 incoming = 9 Pages.怪物工坊.战斗机制域.炮塔机制 incoming = 6 Pages.怪物工坊.战斗机制域.玩家机制 incoming = 5 Pages.怪物工坊.战斗机制域.挑战状态 incoming = 4 Pages.怪物工坊.战斗机制域.地雷机制 incoming = 4 Pages.怪物工坊.战斗机制域.命中机制 incoming = 4
这比以前所有逻辑都打到 战斗机制 一个模块健康很多。

当前主要耦合热点

热点 1:状态 Facade 入度仍然最高

入度最高模块:
text
Pages.纸上状态域.战斗 39 Pages.纸上状态域.家园 28 Pages.纸上状态域.进度 26 Pages.纸上状态域.背包 15 Pages.纸上状态域.界面 14
其中规模:
text
Pages/纸上状态域/战斗.lua: 351 行,70 个函数 Pages/纸上状态域/家园.lua: 257 行,52 个函数 Pages/纸上状态域/进度.lua: 143 行,29 个函数
这类耦合目前是可接受的中心化状态 Facade 耦合,不是危险耦合。
战斗.lua 已经明显偏大:
text
战斗状态 Facade:351 行 / 70 函数 / 入度 39
它有成为新“大状态服务”的趋势。
建议后续优先观察或拆分:
  • Pages.纸上状态域.战斗
  • 兵体状态
  • 敌人集合
  • 弹体集合
  • 拾取/粒子/爆炸集合
  • 战斗资源与行动点
  • Pages.纸上状态域.家园
  • 安全屋状态
  • 公开安全屋状态
  • 家园对象状态
  • 工作台状态
  • Pages.纸上状态域.进度
  • 页数进度
  • 清场阶段
  • 休整阶段
优先级:中高,但不建议一次性大拆。先从 战斗.lua 内部最独立的集合状态开始。

热点 2:Data.Store 仍是非玩法侧中心 Store

text
Data.Store incoming = 18
直接依赖包括:
  • App.帧更新
  • App.登录流程
  • App.纸上投资评分服务
  • Data.数据迁移
  • Pages.分析.*
  • Pages.持仓.*
  • Pages.记录.*
  • Pages.设置
  • Pages.怪物工坊.插件域.加载会话
这个热点主要在投资/持仓/记录应用侧,不是当前纸上战斗主循环最大的风险。
当前可接受,但如果后续继续优化主应用架构,可以按领域服务拆:
  • App.账户服务
  • App.持仓服务
  • App.记录服务
  • App.分析服务
  • App.设置服务
  • App.云同步服务
优先级:中低,除非要继续优化非游戏投资系统。

热点 3:Pages.纸上流程 仍是流程协调中心

text
Pages.纸上流程 incoming = 7
调用来源:
  • Pages.纸上建家域.页面流程
  • Pages.纸上关卡域.公开失败休整
  • Pages.纸上背包
  • Pages.纸上关卡域.休整视图
  • Pages.纸上翻页
  • Pages.纸上排行
  • Pages.怪物工坊.入口域.导航绑定
Pages.纸上流程.lua 规模不大:
text
55 行,9 个函数
目前更像轻量流程门面,风险不高。
如果未来继续膨胀,可以改成命令注册器或事件式导航,但现在不急。
优先级:中低

热点 4:新的细域模块入度上升,但属于正常现象

例如:
text
Pages.纸上障碍域.地形几何 incoming = 8 Pages.纸上障碍域.生成器 incoming = 6 Pages.怪物工坊.战斗机制域.炮塔机制 incoming = 6 Pages.怪物工坊.战斗音频 incoming = 9
这些是聚合解耦后的自然结果。
目前它们职责明确,比之前依赖大聚合模块好。
需要注意的是:
text
Pages/纸上障碍域/地形几何.lua: 430 行,29 函数 Pages/怪物工坊/战斗机制域/炮塔机制.lua: 305 行,7 函数
地形几何.lua 行数偏高,但它是算法/几何集中模块,问题不严重。
如果后续继续加地形类型,可以再拆:
  • 河流桥梁几何
  • 坑洞几何
  • 废墟墙体几何
  • 实体避障
优先级:

当前总体评价

架构状态

text
大聚合直连耦合:低 循环依赖风险:低 玩法域职责边界:较清晰 状态 Facade 耦合:中 数据 Store 耦合:中 流程协调耦合:中低

综合评分

如果 10 分表示“低耦合、边界清晰、可持续演进”:
text
当前:8.1 / 10 上一轮:7.5 / 10 优化前估计:4.5 ~ 5 / 10
主要加分点:
  1. Pages.纸上障碍 入度降为 0。
  2. Pages.怪物工坊.战斗机制 入度降为 0。
  3. 大聚合模块直连基本全部清零。
  4. 循环依赖仍为 0。
  5. 战斗主循环现在依赖更细的机制域模块。
主要扣分点:
  1. Pages.纸上状态域.战斗 入度 39,且 351 行 / 70 函数,已经偏大。
  2. Pages.纸上状态域.家园 入度 28,后续可能继续变胖。
  3. Data.Store 仍是应用数据中心热点。
  4. Pages.纸上障碍域.地形几何 430 行,未来新增地形时可能继续膨胀。
4