Share via


Nombres de clases, estructuras e interfaces

Actualización: noviembre 2007

En general, los nombres de tipo deberían ser sintagmas nominales, donde el nombre es la entidad representada por el tipo. Por ejemplo, Button, Stack y File tienen nombres que identifican la entidad representada por el tipo. Elija nombres que identifican la entidad desde el punto de vista del desarrollador; los nombres deberían reflejar escenarios de uso.

Las instrucciones siguientes se aplican a la selección de nombres de tipo.

Denomine las clases, interfaces y tipos de valor con nombres, sintagmas nominales o, en ocasiones, con sintagmas adjetivales, utilizando la grafía Pascal.

No utilice prefijos para los nombres de clases (como la letra C).

Las interfaces, que deberían comenzar con la letra I, son la excepción a esta regla.

Considere finalizar los nombres de las clases derivadas con el nombre de la clase base.

Por ejemplo, los tipos del marco de trabajo que heredan de Stream terminan con Stream y tipos que heredan de Exception finalizan con Exception.

Incluya para los nombres de interfaz el prefijo de la letra I para indicar que el tipo es una interfaz.

Asegúrese de que, al definir un par clase-interfaz en el que la clase es una implementación estándar de la interfaz, los nombres sólo se diferencian en el prefijo de la letra I usado en el nombre de la interfaz.

Por ejemplo, el marco de trabajo proporciona la interfaz IAsyncResult y la clase AsyncResult.

Nombres de parámetros de tipo genérico

Los genéricos son una nueva característica principal de la versión 2.0 de .NET Framework. Las instrucciones siguientes explican cómo seleccionar nombres correctos para los parámetros de tipo genérico.

Denomine los parámetros de tipo genérico con nombres descriptivos, a menos que un nombre de una sola letra sea autodescriptivo y usar un nombre descriptivo no agregue ningún valor.

IDictionary<TKey, TValue> es un ejemplo de interfaz que sigue esta instrucción.

Considere la posibilidad de utilizar la letra T como el nombre del parámetro de tipo para los tipos cuyo parámetro de tipo sólo tiene una letra.

Prefije los nombres de parámetros de tipo descriptivos con la letra T.

Considere indicar en el nombre de parámetro las restricciones situadas en un parámetro de tipo. Por ejemplo, un parámetro restringido a ISession se puede denominar TSession.

Nombres de tipos comunes

Las instrucciones siguientes explican las convenciones de nomenclatura que ayudan a los desarrolladores a reconocer el escenario de uso previsto para determinadas clases. Cuando la instrucción se refiere a los tipos que heredan de algún otro tipo, esto se aplica a todos los herederos, no sólo a los tipos que heredan directamente. Por ejemplo, la instrucción "Agregue el sufijo Exception a los tipos que heredan de Exception." significa que cualquier tipo que tenga una excepción Exception en su jerarquía de herencia debería tener un nombre terminado en Exception.

Cada una de estas instrucciones también sirve para reservar el sufijo especificado; a menos que su tipo cumpla los criterios establecidos por la instrucción, no debería utilizar el sufijo. Por ejemplo, si su tipo no hereda directa o indirectamente de Exception, su nombre no debe terminar en Exception.

Agregue el sufijo Attribute a las clases de atributo personalizadas.

ObsoleteAttribute y AttributeUsageAttribute son nombres de tipo que siguen esta instrucción.

Agregue el sufijo EventHandler a los nombres de tipos que se utilizan en eventos (como tipos de valor devueltos de un evento de C#).

AssemblyLoadEventHandler es un nombre de delegado que sigue esta instrucción.

Agregue el sufijo Callback al nombre de un delegado que no sea un controlador de eventos.

No agregue el sufijo Delegate a un delegado.

Agregue el sufijo EventArgs a las clases que extienden System.EventArgs.

No derive de la clase System.Enum; utilice en su lugar la palabra clave admitida por el lenguaje usado. Por ejemplo, en C#, utilice la palabra clave enum.

Agregue el sufijo Exception a los tipos que heredan de System.Exception.

Agregue el sufijo Dictionary a los tipos que implementan System.Collections.IDictionary o System.Collections.Generic.IDictionary<TKey, TValue>. Tenga en cuenta que System.Collections.IDictionary es un tipo específico de colección, pero que esta instrucción tiene prioridad sobre la instrucción de colecciones más general especificada más adelante.

Agregue el sufijo Collection a tipos que implementan System.Collections.IEnumerable, System.Collections.ICollection, System.Collections.IList, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ICollection<T> o System.Collections.Generic.IList<T>.

Agregue el sufijo Stream a los tipos que heredan de System.IO.Stream.

Agregue el sufijo Permission a los tipos que heredan de System.Security.CodeAccessPermission o implementan System.Security.IPermission.

Nombres de las enumeraciones

No utilice un prefijo en nombres de valor de enumeración. Por ejemplo, no utilice un prefijo como por ejemplo ad para las enumeraciones ADO, rtf para las enumeraciones de texto enriquecido, etc.

Esto también implica que no debería incluir el nombre de tipo de enumeración en los nombres de los valores de enumeración. El ejemplo de código siguiente explica la denominación incorrecta de los valores de una enumeración.

Public Enum Teams

    TeamsAlpha
    TeamsBeta
    TeamsDelta

End Enum
public  enum Teams
{
    TeamsAlpha,
    TeamsBeta,
    TeamsDelta
}

No utilice Enum como sufijo para los tipos de enumeración.

No agregue Flags como sufijo para los nombres de enumeraciones de marcadores.

Utilice un nombre singular para una enumeración, a menos que sus valores sean campos de bits.

Utilice un nombre plural para las enumeraciones que tienen campos de bits como valores, también denominados enumeraciones de marcadores.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Otros recursos

Instrucciones de diseño para desarrollar bibliotecas de clases

Instrucciones de nomenclatura