Duplicar posible:
Initialize class fields in constructor or at declaration?¿Es una mala práctica para inicializar los campos fuera de un constructor explícito
Estamos discutiendo acerca de las prácticas de codificación. Los ejemplos aquí son un poco demasiado simples, pero el verdadero negocio tiene varios constructores. Para inicializar los valores simples (por ejemplo, fechas a su valor mínimo), he movido el código de los constructores a las definiciones de campo.
public class ConstructorExample
{
string _string = "John";
}
public class ConstructorExample2
{
string _string;
public ConstructorExample2()
{
_string = "John";
}
}
¿Cómo debe ser realizada por el libro? Tiendo a ser muy caso por caso y tal vez soy un poco flojo sobre este tipo de cosas. Sin embargo, creo que Occams razor me dice que mueva la inicialización de múltiples constructores. Por supuesto, siempre podría mover esta inicialización compartida en un método privado.
La pregunta es esencialmente ... ¿Inicializar campos en los que se definen de forma opuesta a la del constructor?
El argumento que estoy enfrentando es uno de manejo de errores, pero no creo que sea relevante, ya que no hay excepciones posibles que no se recojan en tiempo de compilación.
posible duplicado de [Mejores prácticas: Inicializar campos de clase en el constructor o en la declaración?] (Http://stackoverflow.com/questions/24551/best-practice-initialize-class-fields-in-constructor-or-at -declaración) –
es pero no encuentro las respuestas en ese hilo para ser convincente, la primera es un poco dogmática. La referencia a FXCop es un argumento fuerte, como lo es el argumento del mantenimiento y el encadenamiento del constructor, pero aparte de eso, nada es demasiado fáctico. –
Para conocer algunas consecuencias interesantes de las diferencias sutiles entre la inicialización en el campo y en el cuerpo, consulte http://blogs.msdn.com/ericlippert/archive/2008/02/15/why-do-initializers-run-in- the-opposite-order-as-constructors-part-one.aspx y http://blogs.msdn.com/ericlippert/archive/2008/02/18/why-do-initializers-run-in-the-opposite- order-as-constructors-part-two.aspx –