Sé que esta pregunta tiene un título similar a esto: C++: calling member functions within constructor? pero estoy haciendo una pregunta más general.Llamar a las funciones miembro desde un constructor
¿Es una buena práctica llamar a las funciones miembro desde dentro de un constructor? Hace que sea más fácil leer el código y prefiero la manera de hacerlo del tipo de encapsulación (es decir, cada bloque de código tiene un único objetivo).
Un ejemplo ilustrativo, en python:
class TestClass:
def __init__(self):
self.validate()
def validate(self):
# this validates some data stored in the class
¿Es esta una mejor forma de hacerlo que escribir el código validate
dentro del constructor? ¿Hay inconvenientes en este método? Por ejemplo, ¿es más costoso con la sobrecarga de la función?
Personalmente lo prefiero para la legibilidad, pero esa es solo mi preferencia.
Saludos
realidad, llamar a los métodos virtuales desde un constructor puede ser muy útil. Por ejemplo, un método virtual para recuperar un tipo de clase específico para crear instancias en el constructor base donde la clase específica es un descendiente de una clase base conocida o el implementador de una interfaz conocida. De esta forma, puede mantener la creación de instancias y la destrucción en la clase base, al tiempo que permite una composición personalizada por parte de los descendientes. –
¿Recomiendas "llamar a un método en un objeto no inicializado" como una buena práctica para uso general en todos los idiomas? Preferiría usar los patrones de diseño AbstractFactory y/o Builder para resolver su problema de ejemplo. – richj