---
name: bad-smell
description: 识别到代码坏味道时，阅读本技能并及时重构。例：重复代码,过长函数,过大的类,过长参数列,数据泥团,依恋情结,基本类型偏执,重复的 Switch,拒绝遗赠,发散式变化,霰弹式修改。
user-invocable: true
---

# bad-smell

检查代码是否有以下坏味道：

- 代码臃肿
	- 重复代码（Duplicated Code）：多个地方有结构相似的代码，复制粘贴导致修改时容易遗漏。
	- 过长函数 / 方法（Long Method）：一个函数写了成百上行，逻辑复杂，难以理解。
	- 过大的类（Large Class）：一个类承担了太多职责，内聚性差。
	- 过长参数列（Long Parameter List）：函数参数过多（通常超过5个），调用和阅读都很吃力。
	- 数据泥团（Data Clumps）：总是一起出现的几个数据项（如一些字段总是结伴出现在不同的类或方法中），应封装成对象。
- 面向对象滥用
	- 依恋情结（Feature Envy）：某个函数对另一个类的兴趣远高于自己所处的类，频繁调用别人的数据。
	- 基本类型偏执（Primitive Obsession）：过度使用基本数据类型（如用字符串或整型表示复杂的业务概念，而不是封装成对象）。
	- 重复的 Switch（Repeated Switches）：到处是相同的 switch-case 或 if-else 条件分支，扩展新类型时需要修改多处。
	- 拒绝遗赠（Refused Bequest）：子类继承了父类，却不实现或不需要父类的方法和数据。
- 变更时的阻碍
	- 发散式变化（Divergent Change）：一个类经常因为不同的原因在不同的方向上发生修改（说明职责太杂）。
	- 霰弹式修改（Shotgun Surgery）：每遇到一个微小变化，就得到处修改许多个不同的类。

项目当前处于早期开发阶段。**架构债务越早处理越好。**

若你能“嗅到”明显更优的设计，且范围可控无风险，请立刻随手优化、重构。

如果重构范围较大、风险较高或需要进一步规划，请在 `{project_root}/docs/freeform/yymmdd-{summary}.smell.md` 简单记录你发现的坏味道，然后回到原有任务。
