Java类应该具有的实例变量的最大数量是多少?

4

在JAVA类中拥有20-25个实例变量以及它们的getter/setters是好的OO设计吗?
所有变量都是完全独立的。
由于我正在使用表示列族的HBase类,因此每行列族可以具有不同数量的列。因此,我必须在该类中放置这么多的变量。 我非常好奇, 一个JAVA类理想情况下应该拥有多少实例变量和方法?

5个回答

7
尝试实现良好的面向对象编程时,寻求类具备单一职责是很好的做法。因此,如果你有许多不相关的变量,那么这个类可能在做太多事情了。这将会是一个“代码异味”,你应该考虑将其重构为多个类。
很高兴你对良好的面向对象编程感兴趣。我建议阅读《重构与代码异味》等相关资料。
可参考单一职责原则

1
可能适用于 http://en.wikipedia.org/wiki/God_object。 - Eric

4
只要确保低耦合,实际上并不重要。将如此多的变量分配给一个类可能会增加高耦合的机会。
此外,这可能是您的类低内聚性的迹象,而不是理想情况下的高内聚性。

2

在20-25个实例变量的范围内,你应该还在限制范围之内,但我认为20-25可能太多了。你可以尝试将它们分组到不同的类中,并减少实例变量的数量。

通常情况下,拥有大量实例变量会使类的范围受到限制,在希望保持解决方案的场景中并不理想。如果正确地分解(如果做得好),应该会增加某些类的可重用性。


0

如果你的类代表数据持有者对象,那么这样做是完全可以的。这种设计在Java Bean中很常见。

例如,如果你有一个代表公司员工的类,那么通常情况下,一个员工会有20-25个属性。

但是,如果你把太多的实例变量和业务方法混在一起,那么在后面你将会遇到困难,因为你将无法得到集中和专注的业务组件。

为了使架构更好,你可以考虑继承(子类)或组合(内部类)。


-1

Java对一个类可以拥有的实例变量没有任何限制。根据您的需求,您可以拥有任意数量的实例变量。

需要记住的关键点是它们只能通过getter和setter方法来访问。用户不应该直接使用实例变量名称来访问它们。

这意味着实例变量应该声明为私有修饰符,并且必须提供公共方法来访问和操作它们。


嘿,JVM有一个限制。 - Chao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接