Estoy teniendo una discusión con mi compañero de trabajo sobre cuánto trabajo puede hacer un constructor. Tengo una clase, B que requiere internamente otro objeto A. El objeto A es uno de los pocos miembros que la clase B necesita para hacer su trabajo. Todos sus métodos públicos dependen del objeto interno A. La información sobre el objeto A se almacena en la base de datos, así que trato de validarla y obtenerla buscándola en la base de datos en el constructor. Mi compañero de trabajo señaló que el constructor no debería hacer mucho trabajo más que capturar los parámetros del constructor. Dado que todos los métodos públicos fallarían de todos modos si el objeto A no se encuentra usando las entradas al constructor, argumentaba que en lugar de permitir que se cree una instancia y luego falle, en realidad es mejor lanzar temprano en el constructor.
¿Qué piensan los demás? Estoy usando C # si eso hace alguna diferencia.
Lectura ¿Hay alguna razón para hacer todo el trabajo de un objeto en un constructor? Me pregunto si buscar el objeto A yendo a DB es parte de "cualquier otra inicialización necesaria para que el objeto esté listo para usar" porque si el usuario pasara valores incorrectos al constructor, no podría usar ninguno de sus métodos públicos.
Los constructores deben crear instancias de los campos de un objeto y hacer cualquier otra inicialización necesaria para que el objeto esté listo para usar. Esto generalmente significa que los constructores son pequeños, pero hay escenarios en los que esto supondría una cantidad considerable de trabajo.