该技能面向 Kotlin 项目中从远程数据源读取类型标记(如枚举)并需要兼容本地旧版本存储数据的场景,提出一套防止“未知状态”被误判为已知类型的归一化与判断纪律。
用途:当远程源在自身词汇表中声明某列的类型标记(如以固定前缀开头的字符串),而本地存储中可能混有旧版本映射器写入的非标准值(如展示用单词、小写拼写、来自其他字段的值)时,通过集中式归一化对象确保所有比较都基于源可识别的标记,避免在调用点分散比较导致语义漂移。
主要能力:定义单一归一化对象(如 ItemKind),提供 normalize 函数仅保留以源前缀开头的值,否则返回 null;提供 isKnown 判断源是否声明了类型;提供 isPlain、isRich 等判断函数,内部必须调用 normalize 后再比较;明确每个判断函数对未知值的处理方向(如 isRich 对未知返回 false,表示“已知为 rich”,而非“未知为 plain”);强调 null 表示“源未声明”,不得折叠为默认值;采用写入时纠正(write-through)代替迁移,并配合读取时归一化;导入或备份数据同样需要归一化,且回退值必须能被读取网关再次归一化为空(如空字符串可行,而以源前缀开头的貌似合理词则不可行);前缀测试是开放策略,接受未来新标记但也可能接受拼写错误或伪造值,若集合稳定且错误代价高则改用显式允许列表。
使用方式:将归一化对象放在集成层与数据层都已依赖的最低模块(通常是领域模块),避免反转依赖或新增模块;所有判断函数内部第一行调用 normalize;调用点不得直接比较标记字面量;通过验证命令检查归一化函数唯一性、判断函数是否调用 normalize、调用点分布以及原始比较的漂移情况;测试每个判断函数至少覆盖三种状态:已知普通值、已知非普通值、null。
适用场景:处理遗留数据、兼容多应用版本、防御性解析远程响应、需要明确三态语义(已知普通、已知非普通、未知)的 Kotlin 项目。
限制:写入时纠正无法修复用户永不回访的条目,这些行会永久保持错误,仅因读取时归一化而中和;前缀测试开放性带来误接受风险;文档未提供具体收费、价格、平台或效果信息,暂未提供。