Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este contenido se vuelve a imprimir con el permiso de Pearson Education, Inc. de Directrices de diseño de frameworks: Convenciones, expresiones y patrones para bibliotecas reutilizables de .NET, 2ª Edición. Esa edición fue publicada en 2008, y el libro ha sido totalmente revisado en la tercera edición. Parte de la información de esta página puede estar obsoleta.
Las directrices de nomenclatura siguientes se aplican a la nomenclatura de tipos generales.
✔️ Utilice nombres para las clases y estructuras con sustantivos o frases nominales, usando PascalCasing.
Esto distingue los nombres de tipo de los métodos, que se denominan con frases de verbo.
✔️ Haga interfaces de nombre con frases adjetivas, o en ocasiones con sustantivos o frases de nombre.
Los nombres y las frases de nombres deben usarse rara vez y podrían indicar que el tipo debe ser una clase abstracta y no una interfaz.
❌ NO asigne nombres de clase a un prefijo (por ejemplo, "C").
✔️ CONSIDERE la posibilidad de finalizar el nombre de las clases derivadas con el nombre de la clase base.
Esto es muy legible y explica claramente la relación. Algunos ejemplos de esto en el código son: ArgumentOutOfRangeException
, que es un tipo de Exception
y SerializableAttribute
, que es un tipo de Attribute
. Sin embargo, es importante utilizar un criterio razonable al aplicar esta directriz; por ejemplo, la Button
clase es un tipo de Control
evento, aunque Control
no aparece en su nombre.
✔️ Debe prefijar los nombres de interfaz con la letra I, para indicar que el tipo es una interfaz.
Por ejemplo, IComponent
(nombre descriptivo), ICustomAttributeProvider
(frase sustantivo) y IPersistable
(adjetivo) son nombres de interfaz adecuados. Al igual que con otros nombres de tipo, evite abreviaturas.
✔️ Asegúrese de que los nombres solo difieren por el prefijo "I" en el nombre de la interfaz cuando se define un par de clase-interfaz donde la clase es una implementación estándar de la interfaz.
Nombres de parámetros de tipo genérico
Los genéricos se agregaron a .NET Framework 2.0. La característica introdujo un nuevo tipo de identificador denominado parámetro de tipo.
✔️ Asigne nombres descriptivos a los parámetros de tipo genérico, a menos que un nombre de una sola letra sea completamente explicativo y un nombre descriptivo no aportaría valor.
✔️ CONSIDERE la posibilidad de usar T
como nombre de parámetro de tipo para los tipos con un parámetro de tipo de letra única.
public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }
✔️ Prefije nombres de parámetros de tipo descriptivo con T
.
public interface ISessionChannel<TSession> where TSession : ISession {
TSession Session { get; }
}
✔️ CONSIDERE la posibilidad de indicar las restricciones colocadas en un parámetro de tipo en el nombre del parámetro .
Por ejemplo, un parámetro restringido a ISession
puede llamarse TSession
.
Nombres de tipos comunes
✔️ Siga las instrucciones descritas en la tabla siguiente al asignar nombres a tipos derivados de o implementar determinados tipos de .NET Framework.
Tipo base | Directrices de tipo derivadas o de implementación |
---|---|
System.Attribute |
✔️ Agregue el sufijo "Attribute" a los nombres de las clases de atributos personalizados. |
System.Delegate |
✔️ Agregue el sufijo "EventHandler" a los nombres de delegados que se usan en eventos. ✔️ Agregue el sufijo "Callback" a los nombres de delegados distintos de los usados como controladores de eventos. ❌ NO agregue el sufijo "Delegate" a un delegado. |
System.EventArgs |
✔️ Agregue el sufijo "EventArgs". |
System.Enum |
❌ NO derive de esta clase; use la palabra clave compatible con el idioma en su lugar; por ejemplo, en C#, use la enum palabra clave .❌ No añada el sufijo "Enum" o "Flag". |
System.Exception |
✔️ Agregue el sufijo "Exception". |
IDictionary IDictionary<TKey,TValue> |
✔️ Agregue el sufijo "Dictionary". Tenga en cuenta que IDictionary es un tipo específico de colección, pero esta guía tiene prioridad sobre la guía de recopilación más general que sigue. |
IEnumerable ICollection IList IEnumerable<T> ICollection<T> IList<T> |
✔️ Agregue el sufijo «Collection». |
System.IO.Stream |
✔️ Agregue el sufijo "Stream". |
CodeAccessPermission IPermission |
✔️ Agregue el sufijo "Permiso". |
Enumeraciones de nomenclatura
Los nombres de los tipos de enumeración (o enums) deben seguir, en general, las reglas estándar de nomenclatura de tipos (PascalCasing, etc.). Sin embargo, hay directrices adicionales que se aplican específicamente a los enum.
✔️ Use un nombre de tipo singular para una enumeración a menos que sus valores sean campos de bits.
✔️ Usa un nombre de tipo plural para una enumeración con campos de bits como valores, también llamada enumeración de banderas.
❌ NO use un sufijo "Enum" en los nombres de tipo de enumeración.
❌ NO utilice sufijos "Flag" o "Flags" en nombres de tipo de enumeración.
❌ NO use un prefijo en los nombres de valor de enumeración (por ejemplo, "ad" para enumeraciones de ADO, "rtf" para enumeraciones de texto enriquecido, etc.).
© Partes 2005, 2009 de Microsoft Corporation. Todos los derechos reservados.
Reimpreso con permiso de Pearson Education, Inc. de Framework Design Guidelines: Convenciones, Idiomas y Patrones para Bibliotecas .NET Reusables, 2ª Edición por Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la Serie Desarrollo de Microsoft Windows.