SuperAPI AI 工具集

tell-dont-ask

编程与开发

查看项目

更新于 10-15 22:39

技能介绍

用途:在审查或重构代码时,发现“先查询对象状态、在外部做判断、再命令或更新同一对象”的写法,并把该行为移回拥有数据的对象,即“告诉对象做什么,而不要问它的状态再自行决定”。

主要能力:定位 getter 加 if 加 setter 这类坏味道;识别 Feature Envy(行为与别的对象数据更亲近);把外部决策迁移为对象上的意图揭示方法;在可能处用意图方法替代 getter;明确保留 DTO、序列化、日志与 UI 投影等例外情况;输出原 ask 模式、迁移后的行为、修订后的 API 及代码改动。

使用方式:按工作流执行——找到获取状态、分支判断、再更新或命令同一对象的代码;为外部决策命名其意图;把行为移到拥有状态的对象;尽可能以意图揭示方法替代 getter;显式保留上述例外。检查要点包括 getter+if+setter 是强信号、Feature Envy 判定、避免添加贫血的直通方法而应迁移真实决策。可阅读 references/patterns.md 获取重构模式;非平凡实现、审查或重构前,应先阅读 references/details.md,其中含详细规则、示例、坏味道与迁移说明。

适用场景:面向对象代码的审查、重构与设计改进。限制:资料未提供具体支持的平台、语言、安装命令、收费或价格信息。