> For the complete documentation index, see [llms.txt](https://ethan-lin.gitbook.io/refactoring/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ethan-lin.gitbook.io/refactoring/dui-xiang-jian-shen-cao/7-task-5.md).

# 任务5：不超过两个实例变量

剩下的两条诫条某种程度有些关联：

* 任何类中的实例变量都不要超过两个（No classes with more than two instance variables）
* 保持实体对象简单清晰（Keep all entities small）

类中实例变量少，行为自然就少，实体对象自然就简单。一般来说，编程过程我们可能会遇见两种类型的对象：一种从头到尾就维护一个实例变量的状态，一种负责维护两个不同变量之间的交互。限制成员变量数量，实际上也避免了类变得过大，承担太多职责，有利于 SRP 原则的实现。

![](/files/-M-JycXfdFwFPw8WKA1A)

## 你的任务

1. 对于拥有超过两个成员变量的类，尝试将它继续拆解直到每个类最多只有 2 个成员变量为止
2. 对于超过 50 行的文件，尝试将它继续拆解
3. 每个文件夹/包不能超过 10 个文件

## 参考

* 《重构 2》8.1 搬移函数（Move Function）
* 《重构 2》8.2 搬移字段（Move Field）
