Los siguientes son los dos enfoques:¿Constructor con todas las propiedades de clase o constructor predeterminado con setters?
- constructor con todas las propiedades de la clase
Pros: Tengo que poner un número exacto de los tipos de parámetros por lo que si hago un error el compilador me advierte (por cierto, ¿hay alguna manera de evitar el problema de haber cambiado erróneamente dos enteros en la lista de parámetros?)
Contras: si tengo muchas propiedades, la línea de creación de instancias puede ser muy larga y abarcar más de dos o más líneas
- set y el constructor por defecto vacío
Pros: Puedo ver claramente lo que estoy estableciendo, por lo que si estoy haciendo algo mal me puedo identificar lo más pronto que estoy escribiendo (No puedo hacer el error anterior de cambiar dos variables del mismo tipo)
Contras: la instanciación de un objeto con muchas propiedades podría tomar varias líneas (no sé si esto es realmente una estafa) y si Me olvido de establecer una propiedad, el compilador no dice nada.
¿Qué vas a hacer y por qué? ¿Conoce algún patrón de luz (considere que debe usarse cada vez que se crea una instancia de un objeto con más de 7 propiedades) para sugerir? Pregunto esto porque tiendo a detestar los grandes constructores donde no puedo descubrir rápidamente dónde está la variable que estoy buscando, por otro lado encuentro que "establecer todas las propiedades" es vulnerable a la falta de algunas de las propiedades .
dude en mis suposiciones argumento en favor y en contra, ya que son la única mina de pensamientos :)
Actualizar - una pregunta que me he encontrado que está relacionado con esto: Building big, immutable objects without using constructors having long parameter lists
Gracias por el código explicativo –
Los constructores son realmente agradables si tiene un objeto complejo. Puedo recomendarlo fuertemente –
y el libro! Es realmente una lectura obligada para los programadores de Java - está disponible en O'Reilly Safari, que es donde yo la leo (tenemos la suscripción más pequeña) –