新规hook
This commit is contained in:
@@ -9,8 +9,7 @@
|
||||
|
||||
### 1.1 单一权威数据源(Single Source of Truth)
|
||||
|
||||
同一业务数据**只能有一个计算/写入的地方**,其余模块只读取、不重算。多处并行计算同一结果,必随
|
||||
规则演化而分叉、互相矛盾。
|
||||
同一业务数据**只能有一个计算/写入的地方**,其余模块只读取、不重算;多处并行计算必随规则演化而分叉、矛盾。
|
||||
|
||||
- 上游**算 + 写 + 校验**,下游**只读 + 消费**。
|
||||
- 需要某数据时,**读权威源**,而不是"顺手再算一遍"。
|
||||
@@ -43,18 +42,14 @@
|
||||
| 编排 vs 算法 | 流程编排(controller) | 纯计算(领域算法) |
|
||||
| 输入 vs 逻辑 | 收发包/参数校验 | 业务处理 |
|
||||
|
||||
> 例(决策 vs 机制):自动操作模块只决定"打哪张/是否碰杠胡过",**不实现**胡牌检测/听牌分析;
|
||||
> 后者是领域算法,决策层只**读取其结果**。这既是关注点分离,也是职责边界。
|
||||
> 例(决策 vs 机制):自动操作模块只决定"打哪张/是否碰杠胡过",**不实现**胡牌检测/听牌分析;后者是领域算法,决策层只**读取其结果**。既是关注点分离,也是职责边界。
|
||||
|
||||
### 1.5 对扩展开放、对修改封闭(OCP)
|
||||
|
||||
新增一种玩法/规则/策略/牌型,应当是**新增一段代码并注册**,而**不是**去改动已经稳定、已被测试
|
||||
覆盖的核心流程。
|
||||
新增一种玩法/规则/策略/牌型,应当是**新增一段代码并注册**,而**不是**去改动已经稳定、已被测试覆盖的核心流程。
|
||||
|
||||
- 手段:**注册表 + 策略**、**管线/中间件**、**工厂**(见 [02 篇](./02-可扩展性与配置化.md))。
|
||||
- 收益:核心不动 → 回归风险小;扩展点清晰 → 新人能照葫芦画瓢。
|
||||
- 例:分级决策框架——核心是"取上下文 → 跑管线 → 选结果",新增高级策略只是**写策略对象 +
|
||||
注册 + 单测**三步,核心零改动。
|
||||
- 例:分级决策框架核心是"取上下文 → 跑管线 → 选结果",新增高级策略只是**写策略对象 + 注册 + 单测**三步,核心零改动。
|
||||
|
||||
### 1.6 配置优先于硬编码
|
||||
|
||||
@@ -69,7 +64,7 @@
|
||||
关键路径上数据缺失,**优先报错或返回 `null`**,把问题暴露在**离根因最近**的地方;不要用
|
||||
`|| 0`、`|| []`、`|| ''`、双源回退把缺失悄悄填平。
|
||||
|
||||
- 兜底会把 bug 藏进"看似正常"的流程里,等到很远的下游才爆发,极难定位。
|
||||
- 兜底会把 bug 藏进"看似正常"的流程里,到很远的下游才爆发,极难定位。
|
||||
- 只有**展示层、纯 UI 兼容、非关键日志**字段,才可在明确边界内用安全默认值。
|
||||
- 详见 [03 篇](./03-数据权威·错误处理·演进.md)。
|
||||
|
||||
@@ -77,7 +72,7 @@
|
||||
|
||||
## 2. 前后端参考分层
|
||||
|
||||
下面是一套**成熟、可直接照搬思路**的分层。层次是稳定的,层内文件如何组织由子游戏自定。
|
||||
下面是一套可直接照搬思路的分层。层次是稳定的,层内文件如何组织由子游戏自定。
|
||||
|
||||
### 2.1 后端分层(自上而下依赖)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user