配置数据与逻辑的分离设计是什么
数据与逻辑分离指把「描述事实的值」与「处理这些值的规则」分开存放:值放在数据文件或配置中心,按环境、按站点组织;规则与结构放在模板或代码里,可测试、可评审。分离的收益是改值不需要改逻辑、评审差异清晰、同一逻辑可作用于多组数据、测试可以只针对规则编写。混合的典型坏味道是模板里出现「某站点特别处理」的分支,或数据文件里夹带表达式与判断。
基本信息
| 数据侧 | 环境值、站点参数、地址与规模等事实 |
|---|---|
| 逻辑侧 | 模板结构、渲染规则、条件与校验 |
| 判断标准 | 改值是否需要动逻辑、逻辑是否可独立测试 |
| 坏味道 | 站点特判分支、数据文件里的表达式 |
| 收益 | 评审清晰、逻辑可复用与可测试 |
典型使用场景
- 多站点共用一套渲染逻辑,仅数据不同
- 环境差异只体现在数据文件中
- 把站点特判重构为数据驱动的参数
- 对渲染逻辑写单元测试而不依赖真实环境
- 让非开发人员也能安全修改数据取值
数据与逻辑分离示意
数据与逻辑分离示意
# 数据文件:只放取值与事实
站点A: { 地址段: ..., 上游: ..., 规模: 中 }
站点B: { 地址段: ..., 上游: ..., 规模: 大 }
# 逻辑模板:规则集中在此,可测试
- 按规模选择实例数档位
- 按地址段渲染接口配置
# 坏味道:模板里出现「若站点等于某站点」的硬编码特判
# 目标:新增同类站点只加数据,不改逻辑与模板位置与内容边界
| 位置 | 应放内容 | 不该放内容 |
|---|---|---|
| 数据文件 | 具体取值与事实 | 表达式与判断逻辑 |
| 模板与代码 | 结构、条件、校验规则 | 站点或环境的硬编码特判 |
| 配置中心 | 环境级取值 | 结构性规则 |
| 测试用例 | 规则逻辑验证 | 依赖真实环境的取值 |
判断分离是否成功的实用检验:新增一个同类站点时,是否只需要追加数据而不用改模板。如果必须改模板,说明逻辑与数据仍然耦合。
数据文件里的表达式会把数据变成不可静态校验的代码:取值合法性无法用简单规则检查,评审也难以判断影响。表达式应回到逻辑层。