Nombrando un ensamblado "central"


20

Sé que esto es algo subjetivo, pero me pregunto si existe un estándar generalmente aceptado para nombrar conjuntos que contengan algunas funciones "centrales".

Digamos que tienes un proyecto Los más grandes, con ensamblados como

  • Company.Product.WebControls.dll
  • Company.Product.Net.dll
  • Company.Product.UserPages.dll

y usted tiene un montón de clases "Core", como el Global Error Handler, la funcionalidad de registro global, etc.

¿Cómo se denominaría generalmente una asamblea de este tipo? Aquí hay algunas cosas que tenía en mente:

  • Company.Product.dll
  • Company.Product.Core.dll
  • Company.Product.Global.dll
  • Company.Product.Administration.dll

Ahora, aunque "solo elija uno y continúe" no causará Armageddon, me gustaría saber si hay una forma "aceptada" de nombrar esos ensamblajes.

15

Con .Net esto es relativamente fácil de cambiar, así que iría con comodidad.

Los ensamblajes más pequeños y más grandes se compilan más rápido que muchos pequeños, así que comenzaría con su materia "básica" como un espacio de nombres dentro de Company.Product.dll, y lo dividiría más adelante si fuera necesario.


2

siempre lo hago .Core.dll.


9

Normalmente me gusta tener nombres que describan lo que hay dentro de cada ensamblaje.

Mire, si nombra algo como .Core, entonces en un equipo grande, puede crecer muy rápido ya que la gente consideraría poner algo muy común en ese conjunto.

Por lo tanto, creo que no debería haber realmente un conjunto de núcleo.

+4

No tengo ningún problema con que haya un ensamblado "Core" per se, pero tienes razón al decir que puede convertirse rápidamente en un vertedero para todo tipo de código cuando trabajas en un equipo grande. 28 sep. 082008-09-28 20:25:27


4

He usado .Core, .Framework y .Common.


2

El que yo uso más común y parece que les encanta, porque no veo otras personas lo utilizan es Root

general, lo haré

CompanyName.Root 

o

SomethingMeaningfulToMe.Root 

4

Utilizamos este modelo:

  • Company.Core.dll
  • Company.WinControls.dll
  • Company.WebControls.DLL
  • Company.Product.Core.dll
  • Company.Product.WinControls.dll
  • Company.Product.WebControls.dll

etc.


33

Todos estos "raíz", " core "," common "y así sucesivamente son realmente malos nombres-convenciones.

cosas Común debe estar en el espacio de nombres raíz, como en .NET, string, int y otras cosas que son "núcleo" o "común" se encuentra en la raíz System -nameSpace.

No utilizar espacios de nombres a colapsar más fácilmente sus carpetas en Visual Studio, pero la estructura después de lo que contiene y para qué se usa para.

System.Security contiene elementos de seguridad comunes que, por ejemplo, System.Xml no es necesario conocer, a menos que desee esa funcionalidad explícitamente.

System.Security.Cryptography es un espacio de nombres secundario. La criptografía es seguridad, pero la seguridad no es criptografía explícita.

De esta manera System.Security.Cryptography tiene visión completa de su espacio de nombres padre y se puede utilizar implícitamente todas las clases dentro de de su padre.

Yo diría que System.Core.dll fue un error de en el lado de Microsoft. Debieron haberse quedado sin ideas o nombres DLL.

Actualización: MSDN tiene un poco actualizado article that tries to explain Microsoft's thinking on the subject.

  0

Para tener en cuenta, .NET BCL ** ** tiene System.Core.dll ** assembly ** pero ** does not ** tiene System.Core ** namespace **. Entonces, desde su perspectiva, MS hizo todo bien. 14 jun. 132013-06-14 21:07:03

  0

@Oybek Sí, debería ser "deben haberse quedado sin ideas o nombres de DLL". 14 jun. 132013-06-14 21:10:58


0

también utilicé .Core, especialmente para el .dll

Todo es una cuestión de gusto imo, si el espacio de nombres raíz es un nombre de la empresa, me siento .Core/marco/común es más descriptivo que sólo el nombre de empresa.

Sin embargo, si está trabajando en algo así como un proyecto de código abierto donde el nombre del dll/namespace es también el nombre del proyecto, .Core /../ podría ser un poco redundante.

Hay muchos ejemplos en el .NET Framework y otras bibliotecas de Microsoft donde se usan ambas convenciones. hay un System.dll y un System.Core.dll por ejemplo :)


1

Esta es una de esas preguntas depende. Si es tu código y trabajas en un equipo pequeño, usaría cualquier convención de nombres que tenga sentido para ti. Sin embargo, he visto en grandes bases de código espacios de nombres que permiten a los desarrolladores descendentes descubrir la funcionalidad sin la necesidad de documentación o capacitación. usamos el modelo la estandarización de los espacios de nombres facilitó que los desarrolladores movieran equipo a equipo.

BussinessName.Division.Layer


0

Core es muy significativo y fácil de entender la convención de nombres y no entre en conflicto con cualquier.espacio de nombre neto del marco por lo que es una muy buena práctica.

Recomiendo encapsular en cada conjunto el servicio que supone proporcionar a la aplicación que lo utiliza y no mezclar diferentes dominios de función en un conjunto.

Estamos utilizando

CSG.Core 
CSG.Data 
CSG.Services 
... 

en el núcleo estamos incluyendo las clases que son susceptibles de ser utilizados en todos nuestros productos: registración, Extensiones Collection, genéricos, ampliaciones de configuración, seguridad, validación, etc.

Aunque achicar muchos ensambles es más lento que un ensamblaje menor y más grande, optimiza su implementación porque implementa solo las clases que usa el sistema y no contiene muchas clases que no se usan solo porque desea guardar el tiempo de compilación.

Cuando nombras tus espacios de nombres, recomiendo encarecidamente que evites repetir la misma palabra en diferentes niveles del espacio de nombre. Por ejemplo, evitar lo siguiente:

YourCompany.Core 
YourCompany.YourProduct.Core 

Cualquiera de poner el núcleo en el Suempresa o en MyProduct pero no en ambos. Puede ser muy confuso si, por ejemplo, su uso se ve así: usando YourCompany; usando YourCompany.YourProduct;

Cuando escriba Core.SomeClass será muy confuso de dónde viene esta clase y en caso de que tenga 2 clases con el mismo nombre, provocará un conflicto.