variable programming practices net namespace name microsoft guidelines convenciones coding code best and c# .net naming-conventions naming

programming - interface naming convention c#



Convención de nomenclatura de las instancias C#.NET? (12)

¿Es la instancia una convención de nomenclatura de cualquier tipo en C #?

En primer lugar, varias personas han hecho referencia a las directrices de nombres. Tenga en cuenta que muchas de esas directrices se aplican solo al área de superficie pública de un tipo. Los miembros privados como el que menciona son detalles de implementación interna y, por lo tanto, están sujetos a las políticas de la organización que los produjo, no están sujetos a las pautas de diseño del marco para lo que la gente espera ver en un elemento público.

Para detalles privados de implementación, el prefijo de barra inferior es común en muchas organizaciones. Personalmente no creo que sea necesario, pero a algunas personas parece gustarles.

Sin embargo, lo importante es que, incluso para los detalles de implementación privados, nunca debe utilizar dos barras inferiores. El equipo del compilador de C # se reserva el derecho de hacer que cualquier palabra que comience con dos barras debajo de la barra tenga el significado que nosotros elijamos en alguna versión futura del lenguaje. Esa es nuestra "puerta de escape" en caso de que realmente necesitemos agregar una nueva palabra clave reservada no contextual y realmente, realmente no queremos romper ningún código existente.

Esto está documentado en la sección 2.4.2 de la especificación C # 4.

Estoy haciendo una pequeña pasantía en una empresa y en su código encuentro clases que se llaman así:

public class FlagsConfig { private static FlagsConfig _instance; }

¿Es la _instance una convención de nomenclatura de cualquier tipo en C #?

Preguntaría a los desarrolladores, pero hoy están todos afuera y la próxima semana en algún curso.


¿Sus compañeros de trabajo son desarrolladores de VB? En VB.Net, el guión bajo se usa regularmente para miembros privados de propiedades o clases. Como VB no distingue entre mayúsculas y minúsculas, no puede usar mayúsculas / minúsculas para distinguir.

Private _someValue As Boolean Protected Property SomeValue() As Boolean Get Return _someValue End Get Set(ByVal value As Boolean) _someValue = value End Set End Property

Actualización: Como un lado, muchas clases en el código fuente de .NET usan esta convención. Especialmente en System.Web .



Eso es relativamente común en mi experiencia. Para ayudar a identificar tipos particulares de variables (partes privadas, parámetros de método, etc.), un desarrollador puede emplear diferentes condiciones de nomenclatura.

p.ej

  • Nombre de la variable
  • variableName (camel case)
  • _variable
  • NOMBRE DE LA VARIABLE

Tiende a variar según la compañía, creo.



Hay muchas convenciones de nombres que las personas siguen

myFirstVar = Camel Notation

La notación Camel generalmente se usa para variables públicas (no variables privadas).

MyFirstVar = Pascal Notation

Pascal se usa generalmente para nombrar Clases y Métodos.

str_MyFirstVar = Hungarian Notation // if variable is of type string

La notación húngara se considera la más antigua pero no se usa más.

_myFirstVariable = used for private fields in general


Hay muchas pautas y estándares para elegir, pero si el estándar utilizado en su lugar de trabajo utiliza guiones bajos, eso es lo que necesita usar. Especialmente si solo está haciendo una pasantía allí, el objetivo debe ser mantener las cosas consistentes (dentro de ese negocio) en lugar de seguir un estándar que sea "mejor" (pero diferente).

Tal vez la mejor pregunta para los desarrolladores (o los jefes superiores) es si tienen documentación / enlaces sobre los estándares que usan.


Me gusta usar un cambio de mayúsculas y minúsculas para distinguir entre campos y propiedades:

// A private field private Boolean someValue; // A public property, exposing my private field public Boolean SomeValue { get { return someValue; } set { someValue = value; } }


Para los miembros privados , hay muchas convenciones diferentes. A algunas personas les gustan los prefijos, otros no (personalmente no). A algunos les gusta diferenciar entre variables de instancia y variables estáticas, otros no:

private string m_foo; private static string s_foo;

Personalmente encuentro que los guiones bajos se interponen cuando estoy leyendo el texto, y creo firmemente que depende de cómo lo lea; Subvocalizo cuando leo, y los bits extra se ponen en el camino de eso. Para otros, claramente no es un problema. Otros consideran que la falta de distinción entre las variables locales y las variables miembro es un problema: normalmente escribo métodos cortos donde, de todos modos, es obvio qué es lo que es.

Lo que es más importante, sin duda, si está creando una API, etc. es la denominación de los miembros públicamente visibles (que incluye los protegidos y los nombres de los parámetros), en cuyo caso debe consultar las directrices de Microsoft .


Sí, es un estándar de nomenclatura común para campos privados:

http://csharpguidelines.codeplex.com/

Estoy de acuerdo con @JonSkeet en que los guiones bajos son complicados, pero AFAIK es el estándar de MS. El documento al que se vincula indica que no usa guiones bajos en su biblioteca, pero creo que se está refiriendo a miembros públicos.

Actualizar

El primer enlace en realidad aboga por lo contrario; no use guiones bajos Mi error, pero sigue siendo un recurso útil.

En deferencia con el Sr. Skeet, seguí su enlace más allá: http://msdn.microsoft.com/en-us/library/ms229012.aspx que también establece que no debe usar guiones bajos, pero esa guía se aplica a la estática , miembros protegidos y públicos, pero no necesariamente a miembros privados.

Conclusión : sí, es un estándar común, pero primero use cualquier estándar acordado internamente antes de tratar de encontrar / usar estándares externos.



_name es desordenado, confuso y muy antiguo. no lo hagas

Convenciones de nomenclatura general de .NET 4.0 http://msdn.microsoft.com/en-us/library/ms229045.aspx

como puede ver, los estados de MSDN

No use guiones bajos, guiones ni ningún otro carácter no alfanumérico