Operador de fusión nula (??)
Personalmente, no veo inconvenientes en el uso de este operador. Considere los siguientes tres ejemplos de código, desde operadores nuevos 'fáciles' hasta 'complejos'.
Sin magia:
bool isNameSet = false;
string name;
if ( isNameSet )
{
Console.WriteLine( name );
}
else
{
Console.WriteLine( "No name set." );
}
Operador ternario:
bool isNameSet = false;
string name;
Console.WriteLine( isNameSet ? name : "No name set." );
Fusión nula:
string name = null;
Console.WriteLine( name ?? "No name set." );
La razón por la que se inventaron estos operadores es porque representan operaciones de programación muy comunes . No querer usarlos porque no estás acostumbrado a ellos es solo ser terco . Los idiomas evolucionan, las características evolucionan, ¡aprende a usarlas!
palabra clave var
Tengo una opinión algo diferente sobre la palabra clave var. El tipo de una variable a menudo proporciona información adicional sobre su código. Creo que ocultar el tipo usando la palabra clave var a veces hace que el código sea menos legible. Sabes menos qué esperar sin usar la finalización automática o pasar el cursor sobre los identificadores para ver cuáles son realmente. En mi opinión, esto da como resultado un código que es más lento de leer / escribir.
Utilizo la palabra clave cuando encuentro que el tipo no da mucha información adicional.
- Principalmente en bucles foreach , que aprendí de Resharper ya que es un escenario allí. La mayoría de las veces, usted sabe qué tipo de colección está atravesando, por lo que sabe que espera artículos de esa colección.
- Consultas Linq . El resultado de las consultas linq a menudo son tipos genéricos muy complejos. Mostrar este tipo hace más daño que bien.
- Nombres largos que simplemente se inicializan con su constructor. Ya puedes saber cuál es el tipo mirando el constructor.
Como ejemplo para la última declaración:
ThisIsSomeSpecializedTypeRightHere duplication =
new ThisIsSomeSpecializedTypeRightHere();
var justAsReadable =
new ThisIsSomeSpecializedTypeRightHere(); // Less duplication.
// But I still prefer the following ...
int number = 9;
SomeCreatedType foo = Factory.CreateSomeType();
??
operador de fusión nula después de que se explica, no se debe permitir que se acerque al código de producción.