2011-12-13 59 views
31

Hay algunas preguntas al respecto, pero todas parecían dirigidas a una parte específica del idioma;¿Cuáles son las convenciones de nomenclatura en C#?

estoy empezando a cabo en C# con un amigo en una empresa para crear juegos para Xbox Live Arcade. Desarrollé varios juegos con ActionScript 2 y 3, pero quiero comenzar a explorar idiomas y dispositivos más potentes.

Quiero asegurarme de que no molesta a las personas con las que empiezo a trabajar (si llego a eso) o incluso a las personas que están aquí cuando tengo problemas y hago una pregunta con un nombre "molesto"/"incorrecto" de métodos, etc.

Lo he encontrado confuso en el código de ejemplo que he visto porque parece que hay, desde mi punto de vista actual, algunos defectos. Dudo que se use una convención de nombres defectuosa, así que me doy cuenta de que solo estoy teniendo problemas para entender.

Por lo que yo puedo decir hasta ahora, no son estas convenciones:

  • public Type SomeMethod()
  • private Type SomeMethod() - sin guión ni nada?
  • public static Type SomeMethod()
  • private static Type _SomeMethod() - éste sólo parece raro ..
  • public Type someProperty - encenderlo hasta carcasa del camello por las propiedades?
  • public static Type SomeProperty - y luego volver a la carcasa de Pascal estática ..

En ActionScript 3, he desarrollado y estrictamente se adhieren a estas convenciones:

  • private var _someVar
  • public var someVar
  • private function _someMethod()
  • public function someMethod()
  • public static var SomeStaticVar
  • public static function SomeStaticMethod()
  • public const SOME_CONSTANT

¿Hay una lista completa de las convenciones de nomenclatura con el razonamiento detrás de cada uno para que yo pueda conseguir mi cabeza alrededor de ellos? La reversión de la sintaxis (es decir, public Type method() en lugar de AS3 public function method():Type) me está echando lo suficiente en el momento en que sé que necesito vigilar cómo estoy nombrando cosas, de lo contrario me olvidaré y desarrollaré malos hábitos, lo cual Más bien, clavar y evitar ahora.

+0

No creo que haya una única convención: tiendo a ver todo tipo de estilos diferentes utilizados por diferentes codificadores. Lo más importante es ser coherente en todo su código, creo. Elige una convención y mantente firme. –

+0

Algunas pautas de Microsoft: http://msdn.microsoft.com/en-us/library/ms229045.aspx y alguna hoja de trucos que me parece útil: http://csharpguidelines.codeplex.com – Otiel

Respuesta

19

Existe el All-In-One Code Framework Coding Standards de Microsoft que contiene un conjunto completo de reglas y directrices. (También disponible here)

Este documento describe la guía de estilo de codificación para C++ nativo y .NET (C# y VB.NET) de programación utilizado por el Microsoft Todo en Uno equipo de proyecto Marco Código.

+21

Enlace de descarga no Scribd: http://1code.codeplex.com/downloads/get/357518?releaseId=84683 – larspars

+0

Tiene que pagar por scribd – rolls

+1

@rolls Puede ver el documento en scribd ** o ** codeplex gratis . Si quieres descargarlo, utiliza el enlace Codeplex. – Nasreddine

7

Hay una gran cantidad de convenciones de nombres defendidas por Microsoft para la programación de .Net. Puede leer sobre estos here.

Como regla general, use PascalCase para propiedad pública, método y nombre de tipo.

Para parámetros y variables locales, use camelCase.

Para campos privados, elija uno: algunos utilizan camelCase, otro prefijo _camelCase con _.

Una convención comúnmente vista es también nombrar constantes con ALLCAPS.

+1

Creo que la convención de todas las mayúsculas es un relicto de estilos de codificación antiguos que se originan en C. Esto es definitivamente algo que no encontrará entre las constantes o enumeraciones de .NET estándar. – Palec

+0

Uso ALLCAPS para enumeraciones y constantes en C#, ya que la mayoría de las veces los estoy usando con interoperabilidad C++ DLL – rolls

47

Las dos mayúsculas principales se llaman camelCase y PascalCase.

Las reglas básicas (con una gran cantidad de variaciones) son

  • tipos de uso PascalCase
  • propiedades y métodos utilice siempre PascalCase
  • miembros públicos (campos, consts) utilizan PascalCase
  • variables locales utilizan camelCase
  • parámetros uso camelCase

Y aunque the documentation establece que "los campos internos y privados no están cubiertos por las directrices" hay algunas convenciones claras:

  • campos privados utilizan camelCase campos
  • privadas que respaldan un prefijo propiedad de un _
+1

@ Henk. Wat sobre campos protegidos y estáticos? –

+4

_ está prohibido en la convención de nomenclatura 'de Microsoft. – Yoda

+0

@Yoda: ¿qué versión/año? MS fue inflexible al respecto cuando salió Fx 1, pero algunos yars posteriores campos de respaldo fueron comúnmente prefijados. –

3

C# prefiere PascalCasing para clases, propiedades y métodos.

Por lo que yo puedo decir hasta ahora, no son estas convenciones:

  • public Type SomeMethod() < - Sí
  • private Type SomeMethod() < - correcto, sin subrayado
  • public static Type SomeMethod() < -
  • correcta
  • private static Type _SomeMethod() < - esto también me parece extraño. subrayan no debería estar ahí
  • public Type someProperty < - no, una propiedad pública debe ser PascalCased (SomeProperty)
  • public static Type SomeProperty - y luego volver a la carcasa de Pascal estática ..

Si está utilizando Visual Studio o XNA Game Studio (que creo que es una bifurcación de Visual Studio), recomiendo lanzar una licencia ReSharper (del software jetbrains). Ellos le dirán, en su editor de código, cómo cumplir con las convenciones comunes de C#.

Adición:

Debe utilizar camelCasing para los campos privados y los argumentos del método. Para campos privados, generalmente los antepongo _withAnUnderscore.

Cuestiones relacionadas