1

我有一个 Java 类,它有 25 个成员变量,但只有两个“有用”的方法(不包括 setter/getter)。我觉得好像有 25 个全局变量在左、右和中心被修改,不知道发生了什么。这是正常的吗?是否有任何“良好实践”规则说明可以在一个类中合理封装多少数据成员和方法?

PS:我搜索了SO,但显然这个问题还没有被问到。

谢谢你的帮助 !

4

3 回答 3

2

多少?从来没听说过。

但我使用的规则是将变量保持在尽可能小的范围内。如果不是所有的 25 个成员都代表对象的状态,那么也不是所有的成员都需要是成员。

于 2012-08-06T11:27:04.030 回答
1

这听起来肯定是错误的。

我希望每个班级都有一个单一的职责,并委托给其他班级并与其他班级合作。如果您有 25 名成员,那么听起来会发生很多事情。我希望重构这个类:

  1. 确定正在发生的事情(正在执行哪些操作/操作)
  2. 确定参与这些任务的成员组
  3. 将这些提取到执行该角色的对象中,并在适当的地方委托给这些对象

在类中执行此操作可能是合适的,从而使重构对客户端类不可见。但是,如果您有多个 setter/getter,我怀疑这不太可能。

无论您如何执行重构,请确保该区域被适当的单元测试集覆盖。

于 2012-08-06T11:25:34.053 回答
0

添加到其他答案看一下pmd rules的TooManyFields部分。

那里说

具有太多字段的类可能会变得笨拙,并且可以重新设计以具有更少的字段,可能通过将相关字段分组到新对象中。例如,具有单独城市/州/邮编字段的类可以将它们停放在单个地址字段中。

其他规则也会派上用场,您可以使用pmdcheckstyle等工具来更好地了解您的代码如何遵守标准。

于 2012-08-06T11:37:18.450 回答