Quando si assegna un default-valore predefinito a un campo (qui falsa ad un bool), FxCop dice:Perché FxCop pensa che l'inizializzazione dei campi sul valore predefinito sia errata?
Resolution : "'Bar.Bar()' initializes field 'Bar.foo'
of type 'bool' to false. Remove this initialization
because it will be done automatically by the runtime."
Ora, so che il codice come int a = 0
o bool ok = false
è l'introduzione di una certa ridondanza, ma a me sembra una pratica di codice molto, molto buona, quella che i miei insegnanti hanno insistito con rettamente secondo me.
Non solo la penalizzazione delle prestazioni è minima, soprattutto: fare affidamento sull'impostazione predefinita si basa sulla conoscenza di ciascun programmatore di utilizzare sempre una parte di codice, su ogni tipo di dati fornito con un valore predefinito. (DateTime?)
Seriamente, penso che questo sia molto strano: il programma stesso che dovrebbe proteggerti dal fare tutti gli errori troppo ovvi, sta suggerendo qui di crearne uno, solo per un aumento delle prestazioni? (stiamo parlando di codice di inizializzazione qui, eseguito solo una volta! I programmatori che si preoccupano molto, possono ovviamente omettere l'inizializzazione (e probabilmente dovrebbero usare C o assemblatore :-)).
FxCop sta facendo un errore evidente qui, o c'è dell'altro?
due aggiornamenti:
Questa non è solo la mia opinione, ma quello che mi è stato insegnato all'università (Belgio). Non che mi piaccia usare un argumentum ad verecundiam, ma solo per mostrare che non è solo il mio parere . E riguardo che:
Le mie scuse, ho appena trovato questo:
Should I always/ever/never initialize object fields to default values?
Non penso che ci sia anche un vantaggio in termini di prestazioni dall'omitare l'inizializzazione. –
Sono d'accordo con Martinho, ma mi piace la tua domanda! –
@ Martin Fernandes: C'è un vantaggio in termini di prestazioni di omettere questo - vedi la mia risposta e l'articolo di riferimento. –