Соглашение об именах .NET для "ID" (любая идентификация: заглавные буквы)

Я нахожусь в процессе унификации этих противоречивых соглашений об именах, и эта проблема в последнее время немного сводит меня с ума.

В кодовой базе, с которой я работаю, нет соглашения относительно «ID»; «ID», «Id» и даже «iD» используются непоследовательно.

**** Вопрос **: Как вы, ребята, в .NET пишете «ID» с заглавной буквы? Например, nodeID, nodeId? FolderID или FolderId?

**** Edit **: как насчет множественного числа? тогда мне делать "NodeIDs" или "NodeIds"?

Спасибо

Ответов (7)

Решение

Заглавные буквы используются для аббревиатур, состоящих из двух букв . UI, IP и т. Д.

«Id» - это аббревиатура идентификатора, поэтому оно должно оставаться в паскальском регистре.

Если вы захотите проверить словарь, вы обнаружите, что идентификатор не рассматривается как сокращение. Фактически форма указывается там как ID или ID. Вероятно, это связано с тем, что оно произошло от таких выражений, как «Идентификационная документация» или «Идентификационные данные», а не изначально использовалось как сокращенная форма «Идентификатор». Таким образом, идентификатор формы не только рекомендуется, но и напрямую поддерживается словарем.

Я думаю, что причина, по которой некоторые люди используют «ID» вместо «Id», заключается в том, что это подмножество «GUID», «UUID» или «UID», которые обычно пишутся с заглавной буквы.

Я согласен с тем, что это должно быть «Id», но я думаю, что это сильно зависит от контекста, потому что в некоторых средах может быть более подходящим использовать «ID».

Итак, для меня «ID» - это технический термин и подмножество вышеперечисленного или используется для обозначения одного из этих технических терминов, тогда как «Id» - это сокращение для любого типа идентификатора и в нетехническом контексте, когда вам нужен человек. чтобы читать его, как в ваших общедоступных API или UML, вы должны (на мой взгляд) использовать «Id».

Microsoft обновила свои правила после того, как был задан этот вопрос.

В статье MSDN « Правила использования заглавных букв» (.NET Framework 4.5) есть раздел « Использование заглавных букв в сложных словах и общих терминах» . В таблице в этом разделе приведены следующие рекомендации по использованию заглавных букв для аббревиатуры «идентификатор» при именовании идентификаторов:

  • Когда применяется регистр Паскаля , используйте Id . (Пример: System.Attribute.TypeId)
  • Когда применяется корпус Camel , используйте id . (Пример: var id = 42;)
  • Никогда не используйте ID .

Последнее руководство называется «Идентификатор», для получения дополнительной информации об этом и других (например, «Хорошо») см. Мой пост о самом последнем Руководстве по дизайну фреймворка (2-е издание).

Рекомендации Microsoft по именованию предлагают использовать все двухбуквенные акронимы с заглавной буквы, превращенные в идентификаторы (IP, IO, UI и т. Д.), Поэтому я склоняюсь к «ID» (хотя это и не акроним), потому что, когда я его читаю, я все равно говорю буквы индивидуально.

Но, честно говоря, я не думаю, что Microsoft знает / знала, что делать с ID / Id:

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

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

Думаю, поэтому они изобрели intellisense ...

Что касается множественного числа: на мой взгляд, s всегда должно быть в нижнем регистре.

Я всегда пишу ID с заглавной буквы, когда это аббревиатура идентификатора и т. Д. Это выглядит неправильно и заставляет меня думать о Фрейде , в противном случае - что определенно не очень хорошо.