Что такое общепринятое соглашение об именах для С#? (функции, классы, параметры, локальные переменные, пространства имен и т.д.)
Именование Конвенции в С#
Ответ 1
Microsoft имеет отличный набор рекомендаций по дизайну библиотеки классов, включая об именах. Короче (примеры в круглых скобках):
- Классы/Структуры: PascalCase (
WebRequest
) - Интерфейсы: PascalCase с префиксом я (
IDisposable
) - Методы: PascalCase (
ToUpper
) - Свойства: PascalCase (
Length
) - События: PascalCase (
Click
) - Пространства имен: PascalCase (
System.Collections
; необычно иметь два слова в одной части) - Непостоянные переменные, включая параметры: camelCased (
keySelector
) - Константы: PascalCase (
Int32.MaxValue
) - Перечисления: PascalCase, единственное значение для не-флагов и множественное число для флагов (
HttpStatusCode
,BindingFlags
) - Атрибуты: PascalCase с суффиксом "Attribute" (
ThreadStaticAttribute
)
Частные имена зависят от вас, но я склонен следовать тем же соглашениям, что и ко всему остальному. Венгерская нотация (в стиле Win32) обескуражена, хотя многие места используют "m_" или "_" в качестве префикса для переменных экземпляра.
Ответ 2
Стандарт .NET от Microsoft должен использовать Pascal Case для пространств имен, общедоступных и защищенных членов (в основном что-либо видимое для других классов). Для частных членов и локальных переменных существует гораздо более широкое место, чтобы просто делать то, что вам и вашей команде наиболее комфортно.
Ответ 3
Рекомендации по устранению неисправностей предлагают
- Типы и пространства имен UpperCamelCase
- Интерфейсы IUpperCamelCase Параметры типа TUpperCamelCase
- Свойства и события методов UpperCamelCase Локальный
- переменные lowerCamelCase Локальные константы lowerCamelCase
- Параметры lowerCamelCase Поля (не частные) UpperCamelCase
- Поля экземпляра (частные) _lowerCamelCase
- Статическое поле (личное) _lowerCamelCase
- Постоянные поля (не частные) UpperCamelCase
- Постоянные поля (частные) UpperCamelCase
- Статические поля readonly (не частные) UpperCamelCase
- Статические поля readonly (частные) UpperCamelCase
- Члены Enum UpperCamelCase
- Все остальные объекты UpperCamelCase
Ответ 4
Не стоит недооценивать значение следующих соглашений об именах платформы, на которой вы работаете, насколько это возможно.
Посмотрите справочный материал для .NET Framework на примеры того, как "вписаться" (http://msdn.microsoft.com/en-us/library/ms229335.aspx).
Джон Скит дал вам ссылку на хорошую запись Microsoft: http://msdn.microsoft.com/en-us/library/ms229042.aspx
Вы также можете использовать автономный Microsoft FxCop (или Code Analysis, если у вас есть Team Edition) http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en, чтобы проверить, что именование конвенции были соблюдены. Он имеет встроенные правила для соглашений Microsoft, что является еще одной причиной, по которой вы должны их использовать!
Ответ 5
Ювал Лоуи взял удар в этом Программирование компонентов .NET, см. этот SO link.
Ответ 6
Я бы посмотрел на тонкую книгу под названием " Элементы стиля С#" Болдуина, Грея и Misfeldt. Синяя книга охватывает соглашения об именах и многие другие аспекты создания последовательного, чистого и удобочитаемого кода.