SuperAPI AI 工具集

j5ik2o-tell-dont-ask

编程与开发

查看项目

更新于 10-15 22:39

技能介绍

用途:在审查或重构代码时,识别并消除“先获取对象状态、再在对象外部做判断”的写法,把行为移回拥有数据的对象,落实 Tell, Don't Ask 原则。

主要能力:定位“取状态—分支判断—再更新或命令同一对象”的代码;为外部决策命名其意图;把该行为迁移到拥有状态的对象;尽量用揭示意图的方法替代 getter;对 DTO、序列化、日志和 UI 投影等例外保持显式说明。

检查要点:getter 加 if 加 setter 是强烈坏味道;Feature Envy 表示行为更贴近另一个对象的数据;避免添加贫血的透传方法,应迁移真正的决策。

使用方式:按工作流执行上述步骤;参考 references/patterns.md 获取重构模式;对非平凡实现、审查或重构,在给出最终建议前阅读 references/details.md,其中包含详细规则、示例、坏味道与迁移说明。输出应包含 ask 模式、被移动的行为、修订后的 API 以及代码变更。

适用场景:面向对象代码的审查与重构,尤其是状态查询与决策分离、行为归属不当的情况。

限制:资料未提供具体语言、框架、安装命令或平台支持信息;DTO、序列化、日志、UI 投影等例外需显式保留。