Al asignar un valor predeterminado valor predeterminado para un campo (en este caso falsa a un bool), FxCop dice:¿Por qué FxCop cree que inicializar los campos al valor predeterminado es malo?
Resolution : "'Bar.Bar()' initializes field 'Bar.foo'
of type 'bool' to false. Remove this initialization
because it will be done automatically by the runtime."
Ahora, sé que el código como int a = 0
o bool ok = false
es la introducción de una cierta redundancia, pero me parece una práctica de código muy, muy buena, en la que mis profesores insistieron con razón, en mi opinión.
No solo la penalización de rendimiento es muy pequeña, más importante: confiar en el valor predeterminado depende del conocimiento de cada programador para usar alguna vez un código, en cada tipo de datos que viene con un valor predeterminado. (¿DateTime?)
En serio, creo que esto es muy extraño: el mismo programa que debería protegerte de cometer todos los errores demasiado obvios, está sugiriendo aquí para hacer uno, solo para un mayor rendimiento? (Estamos hablando de código de inicialización aquí, solo ejecutado una vez! Los programadores que se preocupan mucho, por supuesto pueden omitir la inicialización (y probablemente deberían usar C o ensamblador :-)).
¿FxCop está cometiendo un error obvio aquí, o hay más que eso?
dos actualizaciones:
Esto no es sólo mi opinión, pero lo que me han enseñado en la universidad (Bélgica). No es que me guste usar un argumentum ad verecundiam, pero solo para mostrar que no es solo mi opinión . Y en cuanto a que:
Mis disculpas, acabo de encontrar esta:
Should I always/ever/never initialize object fields to default values?
No creo que haya siquiera un beneficio de rendimiento al omitir la inicialización. –
Estoy de acuerdo con Martinho, pero me gusta su pregunta! –
@Martinho Fernandes: Existe un beneficio en el rendimiento al omitir esto: ver mi respuesta y el artículo al que se hace referencia. –