Digamos que usted tiene una clase llamada de atención al cliente, que contiene los siguientes campos:¿Cuántos argumentos de constructor son demasiados?
- Nombre de usuario
- correo electrónico
- Nombre
- Apellido
Supongamos también que de acuerdo con su lógica comercial, todos los objetos del Cliente deben tener estas cuatro propiedades definidas.
Ahora, podemos hacer esto bastante fácilmente forzando al constructor a especificar cada una de estas propiedades. Pero es muy fácil ver cómo esto se puede descontrolar cuando se ve obligado a agregar más campos obligatorios al objeto Cliente.
He visto clases que incluyen más de 20 argumentos en su constructor y es simplemente un dolor usarlos. Pero, como alternativa, si no necesita estos campos, corre el riesgo de tener información no definida o, peor aún, errores de referencia de objeto si confía en el código de llamada para especificar estas propiedades.
¿Hay alguna alternativa a esto o simplemente tienes que decidir si la cantidad X de argumentos del constructor es demasiada para que puedas vivir?
Sé esto como la "Idiomática de parámetros nombrados": http://www.parashift.com/c++faq-lite/ctors.html#faq-10.18. Relacionado: También existe la "Named Constructor Idiom": http://www.parashift.com/c++faq-lite/ctors.html#faq-10.8 – Frank
¿Puedes separar la persona que llama y los segmentos llamantes del código para hacer es más claro que son entidades separadas? –
La comprobación de valores nulos (apellido == null || firstName == null || ssn == null) debe hacerse EN EL objeto Cliente. Esto se debe a la posibilidad de que estos valores se modifiquen antes de que se cree el objeto Cliente. Además, asegúrese de que los campos de la clase Cliente estén declarados como "finales privados", lo que hace que el Cliente sea inmutable. – drozzy