Operatore coalescente Null (??)
Personalmente, non vedo nessun aspetto negativo nell'usare questo operatore. Considera i seguenti tre esempi di codice, dai nuovi operatori "facili" a quelli "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 volerlo usare perché non ci si abitua è solo essere testardi . Le lingue evolvono, le caratteristiche evolvono, impara a usarle!
var keyword
Ho un'opinione in qualche modo diversa sulla parola chiave var. Il tipo di una variabile spesso fornisce informazioni aggiuntive sul tuo codice. Trovo che nascondere il tipo utilizzando la parola chiave var a volte rende il codice meno leggibile. Conoscere meno cosa aspettarsi senza utilizzare il completamento automatico o passare con il mouse sugli identificatori per vedere cosa sono in realtà. A mio parere, questo risulta in un codice che è più lento da leggere / scrivere.
Uso la parola chiave quando trovo che il tipo non fornisce molte informazioni extra.
- Principalmente in foreach loop , che ho imparato da Resharper poiché è un'impostazione lì. La maggior parte delle volte, sai quale tipo di raccolta stai attraversando, quindi sai che ti aspetti elementi all'interno di quella raccolta.
-
Query Linq . Il risultato delle query linq sono spesso tipi generici molto complessi. La visualizzazione di questo tipo fa più male che bene.
- nomi di caratteri lunghi che sono semplicemente inizializzati con il loro costruttore. Puoi già dire che cos'è il tipo 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();