¿Existen convenciones de nomenclatura o codificación establecidas para definir namespace or type aliases en C#?Convenciones de alias de tipo/espacio de nombres en C#
Para aquellos que no lo saben, el lenguaje C# tiene una característica donde los alias se pueden definir localmente en un archivo para espacios de nombres y tipos. Esto puede ser útil cuando hay conflictos de nombres con bibliotecas de terceros, así como para acortar los nombres de tipo dentro de su código. A continuación se muestra un ejemplo de cómo se ve.
using Forms = System.Windows.Forms;
mayoría de los ejemplos que he visto en la web tienden a utilizar nombres en mayúsculas sin abreviar como alias como el alias Formas en el ejemplo anterior. En algunos lugares, incluido el official MSDN page, que explica el ejemplo con un alias de colAlias para el espacio de nombres System.Collections. Para hacerlo más complicado, puede haber una preferencia para que algunos elijan diferentes pautas dependiendo de si se está definiendo un alias de espacio de nombres o un alias de tipo.
Con el fin de dar algunos antecedentes de por qué estoy interesado en las directrices con nombres de alias explicaré lo que estoy haciendo. En un proyecto reciente comencé a simplificar un patrón en el que tengo varias clases que heredan de una clase base genérica que acepta argumentos de tipo complejo mediante el uso de alias de tipo.
Por lo tanto, utilizando esta técnica, el ejemplo complejo siguiente se convierte en mucho más legible una vez que se aplican los alias de tipo.
public class MyClass: MyGenericBaseClass<TripleLindyFancyAlgorithm<List<SomeValueType>>, List<SomeValueType>>
{
public override List<SomeValueType> DoSomething(TripleLindyFancyAlgorithm<List<SomeValueType>> operation)
{
// ...
}
}
Y debajo de la versión del limpiador de alfombras con alias de tipo.
using Result = List<SomeValueType>;
using Algorithm = TripleLindyFancyAlgorithm<List<SomeValueType>>; // Note: cannot reference an alias within an alias definition!
public class MyClass: MyGenericBaseClass<Algorithm, Result>
{
public override Result DoSomething(Algorithm operation)
{
// ...
}
}
Aunque esto parece mucho más simple, es fácil olvidar que un alias como resultado es en realidad un alias para la lista y que no hay ningún tipo real llamada Resultado. Para separar los conceptos visualmente, estoy considerando seguir alguna convención de prefijación similar al uso del guión bajo '_' antes que los miembros privados para ayudar a distinguir los alias de tipo de los tipos reales. Antes de hacerlo, sin embargo, quiero asegurarme de que no estoy reinventando la rueda ya que tal vez ya existan convenciones más establecidas.
Genial, esta es realmente la primera publicación que discute las convenciones, que es lo que originalmente me propuse plantear esta pregunta. – jpierson
Se concede la recompensa. Gracias por responder a la pregunta que se hizo (es decir, no solo por expresar su preferencia) y respaldarla con la experiencia del mundo real. –
@MatthewStrawbridge - Gracias por eso. Como dices, las otras respuestas no parecen abordar la pregunta en absoluto, sino que establecen las preferencias personales. La disparidad en la respuesta también muestra que, de hecho, no hay consenso sobre convenciones para alias de espacio de nombres ... – Oded