Соглашение об именах в c #

Что такое общепринятое соглашение об именах для c #? (функции, classы, параметры, локальные переменные, пространства имен и т. д.)

У Microsoft есть отличный набор рекомендаций по дизайну библиотеки classов , включая раздел по именованию . Короче (примеры в круглых скобках):

  • Классы / Структуры: PascalCase ( WebRequest )
  • Интерфейсы: PascalCase с префиксом I ( IDisposable )
  • Методы: PascalCase ( ToUpper )
  • Свойства: PascalCase ( Length )
  • События: PascalCase ( Click )
  • Пространства имен: PascalCase ( System.Collections ; необычно иметь два слова в одной части)
  • Непостоянные переменные, включая параметры: camelCased ( keySelector )
  • Константы: Int32.MaxValue ( Int32.MaxValue )
  • Перечисления: PascalCase, единственное значение для не-флагов и множественное число для флагов ( HttpStatusCode , BindingFlags )
  • Атрибуты: PascalCase с суффиксом «Attribute» ( ThreadStaticAttribute )

Частные имена зависят от вас, но я склонен следовать тем же соглашениям, что и ко всему остальному. Венгерская нотация (в стиле Win32) обескуражена, хотя многие места используют «m_» или «_» в качестве префикса для переменных экземпляра.

Стандарт .NET от Microsoft – использовать Pascal Case для пространств имен, общедоступных и защищенных членов (в основном, что-либо видимое для других classов). Для частных членов и местных переменных существует гораздо более широкое место, чтобы просто делать то, что вам и вашей команде наиболее комфортно.

Рекомендации решара


  • Типы и пространства имен UpperCamelCase
  • Интерфейсы Параметры IUpperCamelCase TUpperCamelCase
  • Методы свойств и событий UpperCamelCase Local
  • переменные lowerCamelCase Локальные константы lowerCamelCase
  • Параметры lowerCamelCase Поля (не частные) UpperCamelCase
  • Поля экземпляра (частные) _lowerCamelCase
  • Статическое поле (личное) _lowerCamelCase
  • Постоянные поля (не частные) UpperCamelCase
  • Постоянные поля (частные) UpperCamelCase
  • Статические поля readonly (не частные) UpperCamelCase
  • Статические поля readonly (частные) UpperCamelCase
  • Члены Enum UpperCamelCase
  • Все остальные объекты UpperCamelCase

Не следует недооценивать ценность следующих соглашений об именах платформы, на которой вы работаете, как можно ближе.

Посмотрите справочный материал для .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, что является еще одной причиной, по которой вы должны их использовать!

Juval Lowy взял удар в этом компоненте программирования .NET , см. Также эту ссылку SO .

Я бы посмотрел на тонкую книгу под названием « Элементы стиля C # » Болдуина, Грея и Масфельдта. Синяя книга охватывает соглашения об именах и многие другие аспекты создания последовательного, чистого и удобочитаемого кода.

  • Существуют ли лучшие методы для организации пакетов (Java)?
  • Сингулярные или множественные имена controllerов и помощников в Rails
  • Что такое идеальное соглашение об именах переменных для переменных цикла?
  • Соглашение об именах - подчеркивание в переменных C ++ и C #
  • Какую страtagsю вы используете для именования пакетов в проектах Java и почему?
  • Interesting Posts

    ASP.Net MVC Как передать данные из представления в controller

    Поддержка Jumplist для шпатлевки для разных сеансов на панели задач Windows 7

    Плагин jquery.validate – как обрезать значения перед проверкой формы

    Сбрасывание с RecyclerView + AppBarLayout

    скрипт для преобразования sql-файла mysql dump в формат, который может быть импортирован в sqlite3 db

    Увеличьте размер динамического VDI-диска

    jqgrid длинная текстовая упаковка

    Неожиданный порядок оценки (ошибка компилятора?)

    Как получить основной адрес электронной почты устройства Android

    Как отключить Безопасную загрузку, не входя в BIOS Setup?

    Процесс не может получить доступ к файлу, поскольку он используется другим процессом

    ContentCachingResponseWrapper создает пустую реакцию

    оператор «<<» не соответствует этим операндам

    Изменить язык проверки орфографии для документа в Microsoft Word 2010

    Что было бы хорошим гигабитным маршрутизатором для дома с Windows Home Server?

    Давайте будем гением компьютера.