C # convención de nomenclatura para constantes?

private const int THE_ANSWER = 42; 

o

 private const int theAnswer = 42; 

Personalmente, creo que con los IDE modernos deberíamos ir con camelCase ya que ALL_CAPS parece extraño. ¿Qué piensas?

La convención de nomenclatura y uso de mayúsculas recomendada es usar la cubierta de Pascal para constantes (Microsoft tiene una herramienta llamada StyleCop que documenta todas las convenciones preferidas y puede verificar el cumplimiento de la fuente, aunque es un poco demasiado anal para todos los gustos). p.ej

 private const int TheAnswer = 42; 

La convención de capitalización de Pascal también está documentada en las Pautas de Diseño de Marco de Microsoft.

En realidad, es

 private const int TheAnswer = 42; 

Al menos, si miras la biblioteca .NET, qué IMO es la mejor manera de decidir las convenciones de nombres, para que tu código no se vea fuera de lugar.

Visualmente, Upper Case es el camino a seguir. Es tan reconocible de esa manera. Por el bien de la singularidad y sin dejar ninguna posibilidad de adivinar, ¡voto por UPPER_CASE!

 const int THE_ANSWER = 42; 

Nota : El mayúscula será útil cuando las constantes se usen dentro del mismo archivo en la parte superior de la página y para propósitos intelectuales; sin embargo, si fueran trasladados a una clase independiente, usar Mayúsculas no tendría mucha importancia, por ejemplo:

 public static class Constant { public static readonly int Cons1 = 1; public static readonly int coNs2 = 2; public static readonly int cOns3 = 3; public static readonly int CONS4 = 4; } // Call constants from anywhere // Since the class has a unique and recognizable name, Upper Case might might lose its charm private void DoSomething(){ var getCons1 = Constant.Cons1; var getCons2 = Constant.coNs2; var getCons3 = Constant.cOns3; var getCons4 = Constant.CONS4; } 

Todavía sigo con la mayúscula para los valores de const, pero esto es más por hábito que por alguna razón en particular.

Por supuesto, hace que sea fácil ver de inmediato que algo es una const. La pregunta para mí es: ¿Realmente necesitamos esta información? ¿Nos ayuda de alguna manera para evitar errores? Si le asigno un valor a la const, el comstackdor me dirá que hice algo tonto.

Mi conclusión: ve con la carcasa de camello. Tal vez cambie mi estilo también 😉

Editar:

Que algo huele húngaro no es realmente un argumento válido, IMO. La pregunta siempre debería ser: ¿Ayuda o duele?

Hay casos en que el húngaro ayuda. No muchos hoy en día, pero todavía existen.

En primer lugar, la notación húngara es la práctica de usar un prefijo para mostrar el tipo de datos de un parámetro o el uso previsto. Las convenciones de nombres de Microsoft dicen no a la notación húngara http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

El uso de MAYÚSCULAS no se fomenta como se indica aquí: Pascal Case es la convención aceptable y GRATUITOS. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft también declara aquí que se puede usar MAYÚSCULAS si se hace para que coincida con el esquema existente. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

Esto prácticamente lo resume todo.

Deja el húngaro a los húngaros.

En el ejemplo, incluso dejaría de lado el artículo definitivo y simplemente voy con

 private const int Answer = 42; 

¿Esa es la respuesta o es esa la respuesta?

* Hecho editar como Pascal estrictamente correcto, sin embargo, estaba pensando que la pregunta era buscar más de una respuesta a la vida, el universo y todo .

En su artículo Constantes (Guía de progtwigción C #) , Microsoft da el siguiente ejemplo:

 class Calendar3 { const int months = 12; const int weeks = 52; const int days = 365; const double daysPerWeek = (double) days / (double) weeks; const double daysPerMonth = (double) days / (double) months; } 

Entonces, para las constantes, parece que Microsoft recomienda el uso de camelCasing . Pero tenga en cuenta que estas constantes se definen localmente .

Podría decirse que el nombramiento de constantes visibles externamente es de mayor interés. En la práctica, Microsoft documenta sus constantes públicas en la biblioteca de clases .NET como campos . Aquí hay unos ejemplos:

  • Int32.MaxValue
  • String.Empty (en realidad, static readonly )
  • Math.PI
  • Math.E

Los dos primeros son ejemplos de PascalCasing . El tercero parece seguir las Convenciones de Capitalización de Microsoft para un acrónimo de dos letras (aunque pi no es un acrónimo). Y el cuarto parece sugerir que la regla para un acrónimo de dos letras se extiende a un acrónimo o identificador de una sola letra como E (que representa la constante matemática e ).

Además, en su documento de Convenciones de capitalización, Microsoft establece muy directamente que los identificadores de campo deben nombrarse a través de PascalCasing y proporciona los siguientes ejemplos para MessageQueue.InfiniteTimeout y UInt32.Min :

 public class MessageQueue { public static readonly TimeSpan InfiniteTimeout; } public struct UInt32 { public const Min = 0; } 

Conclusión: utilice PascalCasing para constantes públicas (que están documentadas como const o static readonly fields).

Finalmente, hasta donde yo sé, Microsoft no recomienda convenciones específicas de denominación o uso de mayúsculas para identificadores privados como se muestra en los ejemplos presentados en la pregunta.

En realidad, tiendo a preferir PascalCase aquí, pero por costumbre, soy culpable de UPPER_CASE …

El ALL_CAPS está tomado de la forma de trabajar C y C ++ creo. Este artículo aquí explica cómo surgieron las diferencias de estilo.

En los nuevos IDE, como Visual Studio, es fácil identificar los tipos, el scope y si son constantes, por lo que no es estrictamente necesario.

El software FxCop y Microsoft StyleCop le ayudará a darle pautas y verificar su código para que todos trabajen de la misma manera.