Share via


Nombres de espacios de nombres

Nota:

Este contenido se ha copiado con permiso de Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2ª edición. Esa edición se publicó en 2008 y el libro se ha revisado completamente en la tercera edición. Parte de la información de esta página puede estar obsoleta.

Al igual que en otras directrices de asignación de nombres, el objetivo a la hora de asignar nombres a espacios de nombres es lograr la suficiente claridad para que el programador que usa el marco sepa inmediatamente cuál puede ser el contenido del espacio de nombres. La plantilla siguiente especifica la regla general para asignar nombres a espacios de nombres:

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

A continuación, se muestran algunos ejemplos:

Fabrikam.Math Litware.Security

✔️ ANTEPONGA a los nombres de espacios de nombres un nombre de empresa para evitar que espacios de nombres de diferentes empresas tengan el mismo nombre.

✔️ USE un nombre de producto estable independiente de la versión en el segundo nivel de un nombre de espacio de nombres.

❌ NO use jerarquías de la organización como base para los nombres de las jerarquías de espacios de nombres, ya que los nombres de grupos dentro de las empresas tienden a ser de corta duración. Organice la jerarquía de espacios de nombres en torno a grupos de tecnologías relacionadas.

✔️ USE PascalCasing y separe los componentes del espacio de nombres con puntos (por ejemplo, Microsoft.Office.PowerPoint). Si la marca emplea mayúsculas y minúsculas no tradicionales, debe seguir las mayúsculas y minúsculas definidas por ella, aunque se desvíe de las mayúsculas y minúsculas normales de los espacios de nombres.

✔️ CONSIDERE la posibilidad de usar nombres de espacios de nombres plurales cuando corresponda.

Por ejemplo, use System.Collections en lugar de System.Collection. Pero los nombres de marca y los acrónimos son excepciones a esta regla. Por ejemplo, use System.IO en lugar de System.IOs.

❌ NO use el mismo nombre para un espacio de nombres y un tipo de ese espacio de nombres.

Por ejemplo, no use Debug como nombre del espacio de nombres y luego proporcione también una clase de nombre Debug en el mismo espacio de nombres. Varios compiladores exigen que estos tipos estén completos.

Conflictos de espacios de nombres y nombres de tipo

❌ NO especifique nombres de tipo genéricos, como Element, Node, Log y Message.

Hay una probabilidad muy alta de que eso provoque conflictos de nombres de tipo en escenarios comunes. Debe calificar los nombres de tipos genéricos (FormElement, XmlNode, EventLog, SoapMessage).

Hay instrucciones específicas para evitar conflictos de nombres de tipo en diferentes categorías de espacios de nombres.

  • Espacios de nombres de modelo de aplicación

    Los espacios de nombres que pertenecen a un único modelo de aplicación se usan muy a menudo juntos, pero casi nunca se emplean con espacios de nombres de otros modelos de aplicación. Por ejemplo, el espacio de nombres System.Windows.Forms se usa muy raramente junto con el espacio de nombres System.Web.UI. A continuación se muestra una lista de grupos de espacios de nombres conocidos de modelo de aplicación:

    System.Windows* System.Web.UI*

    ❌ NO asigne el mismo nombre a tipos de espacios de nombres dentro de un único modelo de aplicación.

    Por ejemplo, no agregue un tipo de nombre Page al espacio de nombres System.Web.UI.Adapters, ya que el espacio de nombres System.Web.UI ya contiene un tipo de nombre Page.

  • Espacios de nombres de infraestructura

    Este grupo contiene espacios de nombres que rara vez se importan durante el desarrollo de aplicaciones comunes. Por ejemplo, los espacios de nombres .Design se usan principalmente al desarrollar herramientas de programación. Evitar conflictos con los tipos de estos espacios de nombres no es crítico.

  • Espacios de nombres principales

    Los espacios de nombres principales incluyen todos los espacios de nombres System, excepto los espacios de nombres de los modelos de aplicación y los espacios de nombres de infraestructura. Los espacios de nombres principales incluyen, entre otros, System, System.IO, System.Xml y System.Net.

    ❌ NO asigne nombres de tipos que entren en conflicto con cualquier tipo de los espacios de nombres principales.

    Por ejemplo, nunca use Stream como nombre de tipo. Entraría en conflicto con System.IO.Stream, un tipo usado con mucha frecuencia.

  • Grupos de espacios de nombres de tecnología

    Esta categoría incluye todos los espacios de nombres con los dos primeros nodos de espacio de nombres (<Company>.<Technology>* iguales), como Microsoft.Build.Utilities y Microsoft.Build.Tasks. Es importante que los tipos que pertenecen a una sola tecnología no entren en conflicto entre sí.

    ❌ NO asigne nombres de tipos que entren en conflicto con otros tipos de una sola tecnología.

    ❌ NO incorpore conflictos de nombres de tipos entre tipos de espacios de nombres de tecnología y un espacio de nombres de modelo de aplicación (a menos que la tecnología no esté pensada para usarse con el modelo de aplicación).

Portions © 2005, 2009 Microsoft Corporation. Todos los derechos reservados.

Material reimpreso con el consentimiento de Pearson Education, Inc. y extraído de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition (Instrucciones de diseño de .NET Framework: convenciones, expresiones y patrones para bibliotecas .NET reutilizables, 2.ª edición), de Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la serie Microsoft Windows Development.

Vea también