Init a NULL
[editar] ya que no hay una discusión válida, he cambiado el orden de las opciones un poco para resaltar la opción recomendada.
Las variables deben ser declaradas como local y lo más tarde posible y inicializan inmediatamente. Por lo tanto, el patrón más común es:
Order * order1 = order(...);
justo antes de que se requiere order1
.
Si hay alguna razón para separar la declaración de order1
de la ejemplificación, así:
Order * order1; // Oh no! not initialized!
// ... some code
order1 = order(...);
order1
debe ser inicializado a NULL, para evitar los errores comunes que se producen con las variables sin inicializar, introduce fácilmente cuando // some code changes
.
método de fábrica
Una vez más, hay algo más cambio resilencia aquí: los requisitos para crear instancias de un Order
puede cambiar. Hay dos escenarios en los que puedo pensar:
(1) La validación no puede ser hecha por el constructor de la Orden. Order
puede provenir de una biblioteca tercera parte y no se puede cambiar, o de instancias tiene que añadir la validación de que no está dentro del alcance de Order
:
Order* order(Customer* customer, Product* product)
{
// Order can't validate these, since it doesn't "know" the database
database.ValidateCustomer(customer); // throws on error
database.ValidateProduct(product); // throws on error
return new Order(customer, product);
}
(2) Es posible que tenga una orden que se comporta de manera diferente.
class DemoOrder : public Order { ... }
Order* order(Customer* customer, Product* product)
{
if (demoMode)
return new DemoOrder(customer, product); // doesn't write to web service
else
return new Order(customer, product);
}
Sin embargo, yo no haría de esto un patrón general a ciegas.
Solicitar * = order1 nueva Orden (clientes, productos); es exactamente igual que el código anterior, solo que esto es más legible;) – RvdK
¿Qué experiencia y/o calificaciones tiene su maestro que sugieren que debe prestar la menor atención a lo que él le dice? Cuando te confronten con un maestro, esta debería ser tu primera pregunta para ellos. Hablando como un ex maestro aquí. –