Convenzione di denominazione C # per le costanti?

private const int THE_ANSWER = 42; 

o

 private const int theAnswer = 42; 

Personalmente penso che con gli IDE moderni dovremmo andare con CamelCase dato che ALL_CAPS sembra strano. Cosa ne pensi?

La convenzione di denominazione e maiuscola consigliata consiste nell’utilizzare l’involucro Pascal per le costanti (Microsoft ha uno strumento chiamato StyleCop che documenta tutte le convenzioni preferite e può controllare la conformità alla fonte – sebbene sia un po ‘ eccessivamente ritentiva per i gusti di molte persone). per esempio

 private const int TheAnswer = 42; 

La convenzione di capitalizzazione Pascal è anche documentata nelle Linee guida di progettazione di Microsoft

In realtà, lo è

 private const int TheAnswer = 42; 

Almeno se si guarda alla libreria .NET, quale IMO è il modo migliore per decidere le convenzioni di denominazione, in modo che il codice non sembri fuori luogo.

Visivamente, Upper Case è la strada da percorrere. È così riconoscibile in quel modo. Per motivi di unicità e non lasciando alcuna possibilità di indovinare, voto per UPPER_CASE!

 const int THE_ANSWER = 42; 

Nota : il maiuscolo sarà utile quando le costanti devono essere utilizzate all’interno dello stesso file nella parte superiore della pagina e per scopi intellisense; tuttavia, se dovessero essere spostati in una class indipendente, l’utilizzo di Upper Case non farebbe molta differenza, ad esempio:

 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; } 

Vado ancora con la maiuscola per i valori const, ma questo è più per abitudine che per una ragione particolare.

Certo, rende facile vedere immediatamente che qualcosa è un const. La domanda per me è: abbiamo davvero bisogno di queste informazioni? Ci aiuta in qualche modo a evitare errori? Se assegno un valore al const, il compilatore mi dirà che ho fatto qualcosa di stupido.

La mia conclusione: vai con la carcassa di cammello. Forse cambierò anche il mio stile 😉

Modificare:

Che qualcosa odori ungherese non è un argomento valido, IMO. La domanda dovrebbe sempre essere: aiuta o fa male?

Ci sono casi in cui aiuti ungheresi. Non molti al giorno d’oggi, ma esistono ancora.

Innanzitutto, la notazione ungherese è la pratica dell’uso di un prefisso per visualizzare il tipo di dati di un parametro o l’uso previsto. Convenzioni di denominazione di Microsoft per dice no alla notazione ungherese http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

L’utilizzo di UPPERCASE non è consigliato come indicato qui: Pascal Case è la convenzione accettabile e CAPPELLI DI SCREAMING. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft afferma inoltre che è ansible utilizzare MAIUSCOLO se è fatto per abbinare lo schema esistente. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

Questo lo riassume abbastanza bene.

Lascia ungherese agli ungheresi.

Nell’esempio vorrei anche tralasciare l’articolo definitivo e basta andare con

 private const int Answer = 42; 

È questa la risposta o è questa la risposta?

* Fatta modifica come Pascal rigorosamente corretta, tuttavia pensavo che la domanda fosse cercare più di una risposta alla vita, all’universo e tutto .

Nel suo articolo Constants (C # Programming Guide) , Microsoft fornisce il seguente esempio:

 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; } 

Quindi, per le costanti, sembra che Microsoft stia raccomandando l’uso di camelCasing . Ma nota che queste costanti sono definite localmente .

Probabilmente, la denominazione di costanti esternamente visibili è di maggiore interesse. In pratica, Microsoft documenta le sue costanti pubbliche nella libreria di classi .NET come campi . Ecco alcuni esempi:

  • Int32.MaxValue
  • String.Empty (in realtà, static readonly )
  • Math.PI
  • Math.E

I primi due sono esempi di PascalCasing . Il terzo sembra seguire le Convenzioni sulla capitalizzazione di Microsoft per un acronimo di due lettere (sebbene pi non sia un acryonym). E il quarto sembra suggerire che la regola per un acryonym a due lettere si estenda ad un unico acronimo o identificativo come E (che rappresenta la costante matematica e ).

Inoltre, nel documento Convenzioni sulla capitalizzazione, Microsoft afferma molto direttamente che gli identificatori di campo dovrebbero essere nominati tramite PascalCasing e fornisce i seguenti esempi per MessageQueue.InfiniteTimeout e UInt32.Min :

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

Conclusione: utilizzare PascalCasing per le costanti pubbliche (che sono documentate come campi const o static readonly ).

Infine, per quanto ne so, Microsoft non sostiene specifiche convenzioni di denominazione o capitalizzazione per gli identificatori privati, come mostrato negli esempi presentati nella domanda.

In realtà tendo a preferire PascalCase qui – ma per abitudine, sono colpevole di UPPER_CASE …

L’ALL_CAPS è preso dal modo di lavorare C e C ++ credo. Questo articolo spiega come sono nate le differenze di stile.

Nei nuovi IDE come Visual Studio è facile identificare i tipi, l’ambito e se sono costanti, quindi non è strettamente necessario.

Il software FxCop e Microsoft StyleCop ti aiuterà a darti delle linee guida e a controllare il tuo codice in modo che tutti possano lavorare allo stesso modo.