Частная статическая Readonly Field Capization
Паскаль или случай верблюда?
Я называю частные поля и частные статические поля, используя случай верблюда. Я называю consts (как предложено соглашениями об именах MS) с pascal case (независимо от private и public)....
А как насчет приватной статической readonly? Логика говорит, что дело верблюда... но частное статическое readonly функционально похоже на const... правильно?
Ответы
Ответ 1
Использовать корпус Pascal в именах полей...
Рекомендации по именованию полей применяются к статическим общедоступным и защищенным полям. Вы не должны определять общедоступные или защищенные экземпляры полей.
Имена MSDN членов типов
Статическое поле только для чтения = Паскаль
Официальная конвенция о присвоении имен MSDN
Общие правила:
Используйте Паскаль для всех общедоступныхимена элементов, типов и имен состоящий из нескольких слов.
Обратите внимание, что это правило не применяется к полей экземпляра. По причинам, которые подробно изложено в Design Design Руководства, , вы не должны использовать общедоступные полей экземпляра.
Используйте корпус для верблюда для параметра имена.
Полный список:
IDENTIFIER CASE EXAMPLE
----------------------+-----------+---------------
Class Pascal AppDomain
Enumeration types Pascal ErrorLevel
Enumeration values Pascal FatalError
Event Pascal ValueChanged
Exception class Pascal WebException
Read-only static field Pascal RedValue
Interface Pascal IDisposable
Method Pascal ToString
Namespace Pascal System.Drawing
Parameter Camel typeName
Property Pascal BackColor
Официальная конвенция о присвоении имен MSDN
Также рассмотрим
Ответ 2
Нет, private static readonly
не является само по себе как const
вообще. Рассмотрим:
private static readonly IList<int> foo = new List<int>();
Вы все еще можете сделать foo.Add(0);
. Такие поля только const-like, когда сам объект, а также любые объекты, на которые ссылаются, являются неизменяемыми.
Ответ 3
Я получил предупреждение в StyleCop для:
private readonly Color LabelBackColor = Color.Black;
Предупреждение 364 SA1306: CSharp.Naming: имена переменных и имена частных полей должны начинаться с строчной буквы: LabelBackColor.
См. это обсуждение: личные поля readonly должны начинаться с символа нижнего регистра. Это означает случай Верблюда.
Ответ 4
Я бы не стал беспокоиться о том, чтобы сопоставлять другие соглашения - если вы согласны с любым соглашением об именах, которое вы используете, это не имеет особого значения то, что вы решите сделать. Есть гораздо более важные вещи, о которых можно беспокоиться.
Ответ 5
Вот пример источника ссылки. Интересно, что Microsoft здесь использовал подчеркивание для частных полей и camelCase (без подчеркивания) для частного статического readonly http://referencesource.microsoft.com/#mscorlib/system/collections/arraylist.cs,3e3f6715773d6643. Но этот второй пример также показывает, что у Microsoft нет собственного стандарта для именования полей: http://referencesource.microsoft.com/#mscorlib/system/collections/hashtable.cs