2009-02-27 19 views
26

Sono in procinto di unificare queste convenzioni di denominazione incoerenti e questo problema è stato un po 'mi ha fatto impazzire ultimamente.Convenzione di denominazione .NET per "ID" (qualsiasi identificazione: maiuscole)

Nel codice base su cui sto lavorando non ha alcuna convenzione relativa a "ID"; "ID", "Id" e persino "iD" vengono utilizzati in modo incoerente.

**** Domanda **: in .NET, in che modo capitalizzi "ID"? Per un esempio, nodeID, nodeId? FolderID o FolderId?

**** Modifica **: che ne dici di casi plurali? allora dovrei fare "NodeIDs" o "NodeIds"?

Grazie

+0

Basta ricordare che le etichette di denominazione e GUI variabili seguono regole diverse! Sulla GUI, è ID e OK, non Id e Ok. –

+0

Perché le etichette della GUI dovrebbero essere diverse dagli altri identificatori? –

+0

Dovrebbero tutti seguire regole simili. Questo caos che si vede è quello che è successo prima che FxCop e Framework Design Guidelines fossero diffuse all'interno di Microsoft. Dovresti usare "Id" e "Ok" su tutto il nuovo codice. Vedi la mia risposta per un link al mio post in cui ne parlo di più. –

risposta

57

La lettera maiuscola è per 2 lettere acronimi. UI, IP, ecc.

"Id" è un'abbreviazione per Identificatore, quindi deve essere conservato in caratteri pascal.

+0

E i casi plurali? allora dovrei fare "NodeIDs" o "NodeIds"? – Sung

+4

Nel plurale non è ancora un acronimo, quindi direi "NodeIds". –

+2

Da dove viene la regola che una "abbreviazione" "dovrebbe rimanere pascal cased"? M-W e OED2 lo chiamano entrambi "abbreviazione", ad esempio, ed entrambi usano tuttofare maiuscolo. – Ken

30

Microsoft's naming guidelines suggeriscono usando tutta capitalizzati per 2 acronimi lettera fatta in identificatori (IP, IO, interfaccia utente, ecc), in modo da ho tendo verso "ID" (anche se non è un acronimo) perché quando L'ho letto, continuo a dire le lettere individualmente.

Ma onestamente, non credo che Microsoft sa/sapevano cosa fare con ID/ID o:

ID 

System.Runtime.InteropServices._Activator.GetIDsOfNames() 
System._AppDomain.GetIDsOfNames() 
System.Runtime.InteropServices._Attribute.GetIDsOfNames() 
System.Type.GetTypeFromProgID() 
System.Threading.Thread.ThreadID 
System.Threading.Thread.GetDomainID() 
System.Runtime.Serialization.ObjectHolder.ContainerID 
System.Globalization.Calendar.ID 
System.Globalization.CultureInfo.InvariantCultureID 
System.Web.UI.Control.ClientID 
System.Web.UI.Control.UniqueID 

Id 

System.AppDomain.GetCurrentThreadId() 
System.AppDomain.GetIdForUnload() 
System.AppDomain.IsDomainIdValid() 
System.AppDomain.GetId() 
System.Attribute.TypeId 
System.TypeLoadException.ResourceId 
System.Reflection.AssemblyAlgorithm.AssemblyAlgorithmAttribute.AlgorithmId 
System.Runtime.Remoting.Lifetime.Lease.GetNextId() 
System.Xml.Xpath.XPathNavigator.UniqueId 
System.Data.OleDb.DBPropSet.PropertyId 

(da http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/dcb8e08b-026a-4903-a413-7dbdda131a82/)

Direi che è il motivo per cui hanno inventato intellisense ...

Per quanto riguarda la pluralizzazione: nella mia mente il s dovrebbe sempre essere minuscolo.

+0

Sembra che "System.IO" sia corretto mentre "System.Data.Common.DbDataReader" è stato erroneamente definito secondo le linee guida - Ma questa convenzione è ampiamente accettata? – Sung

+3

"Onestamente, non credo che Microsoft sappia cosa fare:" <- questa è esattamente l'affermazione che sono in ... – Sung

+1

@Sung - Perché dici che DbDataReader è stato erroneamente chiamato? dal libro Framework Design Guidelines menzionato da @Jeff Moser, scrivono che le parole composte scritte come una singola parola (come "endpoint") dovrebbero essere trattate come una singola parola, quindi - Db è un'abbreviazione e non è un acronimo e dovrebbe essere Db e non DB. Se stai già parlando di Microsoft non sapendo cosa fare, cosa dici di questo? System.Data.OleDb.DBPropSet' - Microsoft, per favore decidi: DB o DB ?? – BornToCode

9

L'ultima guida è "Id", per maggiori informazioni su questo e altri (ad esempio, "Ok"), vedere my post sulle più recenti linee guida quadro di progettazione (2 ° edizione)

+6

Andiamo con "Okay" e rendiamo tutti infelici :) –

+0

+1 Mai sentito parlare di quel libro (Linee guida per la progettazione di framework) prima. Fammi controllare. Sembra un libro interessante da leggere. Grazie Jeff – Sung

+0

Perché UserName, FileName, ma non HashTable? HashTable, Username e Filename hanno più senso per me. – Mike

6

ho sempre capitalizzare ID quando si tratta di un abbreviazione di identificatore, ecc. Sembra solo sbagliato e mi fa pensare a Freud, altrimenti - che non è sicuramente una buona cosa.

+0

Nice downvote from the humorless ... – tvanfosson

+2

Facile da chiamare gli altri senza senso di humor, difficile da realizzare lo scherzo è zoppo. : D – jfar

+3

Anch'io tendo a pensare a Freud quando vedo l'ID al posto dell'ID per l'abbreviazione dell'identificatore in un nome di variabile o funzione. (@jfar e tvanfosson: non lo vedo come uno scherzo, solo un'affermazione di fatto). +1 per essere sulla stessa lunghezza d'onda di me (e per controbilanciare questo valore negativo). – RobH

2

Se si desidera controllare il dizionario, l'ID non viene considerato come un'abbreviazione. Infatti, il modulo è specificato come ID o I.D. Là. Ciò è probabilmente dovuto al fatto che proveniva da un'espressione come "Identity Documentation" o "Identification Data" e non era originariamente preso come una forma abbreviata di "Identifier". Pertanto l'ID del modulo non è solo raccomandato, ma è direttamente supportato dal dizionario.

+0

La maiuscola è per 2 lettere acronimi. UI, IP, ecc. "Id" è un'abbreviazione di Identifier, quindi dovrebbe rimanere pascal cased. – Nickolaus

+0

@Nickolaus: il punto di Douglas è che la parola ID è elencata nel dizionario (confermato almeno in Merriam Webster) in maiuscolo, piuttosto che come ID. – Ergwun

1

Penso che la ragione per cui alcune persone utilizzano "ID" anziché "Id" è perché è un sottoinsieme di "GUID", "UUID" o "UID" che sono generalmente in maiuscolo.

Sono d'accordo che dovrebbe essere 'Id' ma penso che dipende fortemente dal contesto, perché in alcuni ambienti si potrebbe essere più opportuno utilizzare 'ID'.

Quindi per me 'ID' è un termine tecnico e un sottoinsieme di quanto sopra o utilizzato per indicare uno di questi termini tecnici mentre 'Id' è lo stenoscopio per qualsiasi tipo di identificatore e in un contesto non tecnico quando hai bisogno di una persona per leggerlo come nelle tue API pubbliche o UML dovresti (a mio avviso) usare "Id".

13

Microsoft ha aggiornato le sue linee guida da quando è stata posta questa domanda.

Nell'articolo MSDN Capitalization Conventions (.NET Framework 4.5), è presente una sezione denominata Capitalizzazione di parole composte e termini comuni. All'interno della tabella in questa sezione, le seguenti indicazioni capitalizzazione sono indicati per l'abbreviazione di "identificatore" durante la denominazione identificatori:

  • Quando si applica Pascal rivestimento, utilizzare Id. (Esempio: System.Attribute.TypeId)
  • Quando si applica cammello rivestimento, utilizzare id. (Esempio: var id = 42;)
  • Mai uso ID.
Problemi correlati