2010-08-09 5 views
4

Можно создать дубликат:
C# naming convention for constants?Что более элегантный способ объявить константный в C#

Я рефакторинга библиотеку в C#, и я нашел много верхних постоянных случаев:

INTERVAL, TIME, SECONDS. 

Я считаю это своего рода ненужным, и лично я предпочитаю объявлять все с помощью верблюжьего случая. Есть какое-то точное определение лучшего пути?

ответ

8

В конечном счете, дело не имеет никакого значения (если только оно не сталкивается с типом/ключевым словом/и т. Д.). Так что действительно консистенция - это главное.

Capitalization Conventions не различают константы и другие элементы - но это рекомендации. Так было бы pascal-case.

2

Все зависит от стандартов, выбранных вашей группой/командой, когда они определили свои правила кодирования.

Если все остальные используют ALL_UPPER_CASE, вы должны упасть в линию.

Лично я предпочитаю использовать верхний регистр для констант, поэтому я знаю, что они просто смотрят на них.

+0

Я делаю это по тем же причинам. На самом деле я делаю шаг вперед, если мои локальные переменные начинаются с _ и мои константы, начинающиеся с __ (двойной подчеркивание). Таким образом, когда вы используете Intellisense, вы получаете все ваши локальные переменные, а также константы. – Fung

+0

. Функция ALL_UPPERCASE возвращается к использованию предварительного процессора C для подстановки констант. Мы прошли долгий путь с тех пор ... –

0

Это все предпочтение, но в верхнем регистре я верю, что отбросить назад на #define, потому что const не сильно отличается от него, как я понимаю.

Более конкретно, я считаю, что верхний регистр const - это еще один метод разграничения, где вы видите в методе что-то во всех шапках, и вы знаете, что это const, если это верблюжьей кейс, он локальный, случай с верблюдом с _ является частным членом, и pascal case является членом общественности.

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

4

Все-CAPS константы общее соглашение ...

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

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

В конце концов, консистенция - это то, что имеет значение.

+1

Не собираюсь беспокоить вас, но я бы сказал, что по умолчанию будут использоваться соглашения .NET, для которых требуется PascalCase. –

+0

Точно! Но поскольку я буду реорганизовать библиотеку для своей команды. Я хочу, чтобы какое-то соглашение, как @Marc, предлагалось. – Custodio

+0

Конвенция C# представляет собой корпус Pascal. –

1

Microsoft's recommendations не упоминать имена всех прописных букв. Они явно не указывают соглашение об обсадке для констант , но они имеют один для значений перечисления (PascalCase) и статические поля только для чтения (также PascalCase). Таким образом, согласно рекомендациям Microsoft, PascalCase, вероятно, ваш лучший вариант.

3

MSDN page on constants предполагает, что константы следует рассматривать как статические члены поля. В этом случае Captialization Conventions предполагает, что PascalCasing подходит.

Если ваша константа является частью общедоступного API, я бы рекомендовал следовать этому соглашению.

Если константа является только частным членом, однако, вы можете использовать любое соглашение, которое пожелаете. MSDN, в данном случае, фактически имеет, например, lower case constant members in the Constant help page.

+1

Действительно. Вы можете увидеть это на месте с константами CLR, такими как 'System.Int32.MaxValue'. – MiffTheFox

1

Я обычно использую PascalCase для публичных констант и camelCase для частных. Исключением является то, что константы импортируются из более старой библиотеки C/C++ или аналогичных (например, тех, которые используются вместе с P/Invoke). - Я храню их, как они были написаны в оригинальной библиотеке.

+0

+1: Когда используемая константа должна «отображать» какой-нибудь известный код C/C++ (где много библиотек использует соглашение с верхним регистром), я стараюсь не изменять их также ... для ясности –

Смежные вопросы