Operatore a coalescenza nulla (??)
Personalmente, non vedo alcun aspetto negativo nell'utilizzare questo operatore. Considera i seguenti tre esempi di codice, da nuovi operatori "facili" a "complessi".
Senza magia:
bool isNameSet = false;
string name;
if ( isNameSet )
{
Console.WriteLine( name );
}
else
{
Console.WriteLine( "No name set." );
}
Operatore ternario:
bool isNameSet = false;
string name;
Console.WriteLine( isNameSet ? name : "No name set." );
Coalescenza nulla:
string name = null;
Console.WriteLine( name ?? "No name set." );
Il motivo per cui questi operatori sono stati inventati è perché rappresentano operazioni di programmazione molto comuni . Non volerli usare perché non ci sei abituato è solo essere testardo . Le lingue si evolvono, le funzionalità si evolvono, imparano ad usarle!
parola chiave var
Ho un'opinione leggermente diversa sulla parola chiave var. Il tipo di una variabile fornisce spesso informazioni aggiuntive sul codice. Trovo che nascondere il tipo usando la parola chiave var talvolta renda il codice meno leggibile. Sai meno cosa aspettarti senza utilizzare il completamento automatico o passando con il mouse sopra gli identificatori per vedere cosa sono realmente. Secondo me, questo porta a un codice che è più lento da leggere / scrivere.
Uso la parola chiave quando scopro che il tipo non fornisce molte informazioni extra.
- Principalmente nei cicli foreach , che ho imparato da Resharper in quanto è un'ambientazione lì. Il più delle volte, sai quale tipo di collezione stai attraversando, quindi sai che ti aspetti articoli da quella collezione.
- Query Linq . Il risultato delle query linq sono spesso tipi generici molto complessi. Visualizzare questo tipo fa più male che bene.
- Nomi di caratteri lunghi che sono semplicemente inizializzati con il loro costruttore. Puoi già capire di che tipo si tratta guardando il costruttore.
Come esempio per l'ultima affermazione:
ThisIsSomeSpecializedTypeRightHere duplication =
new ThisIsSomeSpecializedTypeRightHere();
var justAsReadable =
new ThisIsSomeSpecializedTypeRightHere(); // Less duplication.
// But I still prefer the following ...
int number = 9;
SomeCreatedType foo = Factory.CreateSomeType();
??
operatore di coalescenza nulla dopo che è stato spiegato, non dovrebbe essere autorizzato vicino al codice di produzione.