¿Cuál es el número máximo de variables de instancia que debe tener una clase Java?

¿Es bueno el diseño OO para tener 20-25 variables de instancia en una clase JAVA, con sus getter/setters?
Todas las variables son totalmente independientes.
Como estoy usando una clase en HBase, que representa una familia de columnas, para que la familia de columnas pueda tener diferentes números de columnas para cada fila. Entonces tengo que poner esta cantidad de variables en esa clase. Tengo mucha curiosidad por saber, ¿Cuántas variables y métodos de instancia debería tener idealmente una clase JAVA?

4

5 Respuestas

Tratando de tener un buen OO, es bueno buscar que la clase tenga una sola responsabilidad. Entonces, si tiene tantas variables no relacionadas, parece que la clase está haciendo demasiado.

Esto sería un "olor a código" y debería considerar volver a factorizar en varias clases.

Es genial que estés interesado en el buen OO. Recomiendo leer sobre Refactoring y Code Smells.

http://c2.com/cgi/wiki?OneResponsibilityRule would be relative here..

7
agregado
en.wikipedia.org/wiki/God_object podría aplicarse también.
agregado el autor Eric, fuente

En realidad, no importa, siempre y cuando esté garantizando un bajo acoplamiento . Asignar tantas variables a una clase puede aumentar las posibilidades de un alto acoplamiento.

Además, podría ser un signo de baja cohesión en su clase, en comparación con la situación ideal de alta cohesión.

4
agregado

En 20-25 variables de instancia, debe estar dentro del límite, sin embargo, creo que 20-25 podría ser demasiado. Podría tratar de agruparlos en diferentes clases y reducir la cantidad de variables de instancia.

Por lo general, tener muchas variables de instancia hace que la clase tenga un alcance limitado, lo cual no es ideal en un escenario en el que le gustaría mantener la solución. Romperlo (si se hace correctamente) debería aumentar la reutilización de algunas de sus clases.

2
agregado

Bueno, si su clase representa objetos de soporte de datos, entonces está perfectamente bien ir con eso. Este diseño es común en los frijoles java.

por ejemplo, si usted tiene una clase que representa a un empleado en una empresa, entonces es bastante habitual, si un empleado tiene 20-25 atributos.

Pero si está manipulando tantas variables de instancia con los métodos comerciales, más adelante encontrará dificultades, ya que no podrá obtener componentes comerciales concentrados y enfocados.

Para que sea más adecuado para la arquitectura, puede considerar Herencia (subclase) o composición (clase interna)

0
agregado

Java no tiene ninguna limitación en la variable de instancia java que una clase puede tener. Según su requerimiento, puede tener cualquier número de variables de instancia.

El punto clave para recordar es que debe ser accesible solo mediante métodos getter y setter. Un usuario no debería poder acceder a ellos directamente con el nombre de la variable de instancia.

La variable de instancia de medios debe declararse con modificadores privados y debe proporcionar métodos públicos para acceder a ellos y manipularlos.

0
agregado