1 · 播报词决策与语音合成器分层
Strong ports & adaptersBefore — 决策与硬件焊死
"点" / "正负号" / "已清除" / 错误优先
硬编码私有属性,一调就真出声
After — 纯决策 + 可替换适配器
问题
错误优先、"="念结果、每个功能键的中文播报词,这些适老化核心规则锁在与 AVSpeechSynthesizer 硬耦合的模块里,现有测试接缝完全够不到;非法数字键的防御判断还在引擎与播报侧各写了一份。
方案
把"按键 + 状态 → 播报词"的纯决策从 VoiceAnnouncer 中提出为独立模块,合成器退到接口之后成为可注入的适配器。
收益
- 局部性:播报规则集中一处,可 TDD
- 两个适配器 = 真实接缝
- 删除测试:决策模块删掉,规则散进 View
- 接口即测试面:断言播报词字符串