Соглашение об именах с # для констант?

private const int THE_ANSWER = 42; 
или
private const int theAnswer = 42; 

Лично я думаю, что с современными IDE 9X_constants мы должны использовать camelCase, поскольку 9X_constants ALL_CAPS выглядит странно. Как вы думаете?
513
4

  • @Peter, так как значение константы равно 42, я твердо верю, что это отсылка к [Автостопом по Галактике] (http://en.wikipedia.org/wiki/Phrases_from_The_Hitchhiker%27s_Guide_to_the_Galaxy#A ...
9
Общее количество ответов: 9

Ответ #1

Ответ на вопрос: Соглашение об именах с # для констант?

Рекомендуемое соглашение об именах и использовании 9X_c-sharp заглавных букв - использовать PascalCasing для констант 9X_constant (у Microsoft есть инструмент с именем StyleCop, который 9X_non-const документирует все предпочтительные соглашения 9X_naming-conventions и может проверять ваш источник на соответствие 9X_non-const - хотя это тоже немного анально сохраняет 9X_constants на вкус многих людей). например

private const int TheAnswer = 42; 

Соглашение 9X_.cs-file об использовании заглавных букв в языке 9X_c#.net Pascal также задокументировано в Framework Design Guidelines от Microsoft.

614
8

  • В правилах Microsoft говорится: «Не ...

Ответ #2

Ответ на вопрос: Соглашение об именах с # для констант?

Визуально верхний регистр - лучший вариант. Это 9X_c#.net так узнаваемо. Ради уникальности и не оставляя 9X_c#-language шанса гадать, голосую за UPPER_CASE!

const int THE_ANSWER = 42; 

Примечание. Верхний 9X_variable-naming регистр будет полезен, когда константы должны 9X_constants использоваться в одном файле в верхней части 9X_casing-conventions страницы и для целей intellisense; однако, если 9X_naming-conventions бы они были перемещены в независимый класс, использование 9X_constants верхнего регистра не имело бы большого значения, например:

public static class Constant { public static readonly int Cons1 = 1; public static readonly int coNs2 = 2; public static readonly int cOns3 = 3; public static readonly int CONS4 = 4; } // Call constants from anywhere // Since the class has a unique and recognizable name, Upper Case might lose its charm private void DoSomething(){ var getCons1 = Constant.Cons1; var getCons2 = Constant.coNs2; var getCons3 = Constant.cOns3; var getCons4 = Constant.CONS4; } 

97
5

  • @usefulBee Согласен. Но все же хорошо отметить, как это _согласованный_ способ написания. В последнее время я делал много кода Ruby, и я думаю, что SCREAMING_SNAKE_CASE имеет смысл: совершенно очевидно, что это что-то особенное, и вам даже не нужно ...

Ответ #3

Ответ на вопрос: Соглашение об именах с # для констант?

На самом деле это

private const int TheAnswer = 42; 

По крайней мере, если вы 9X_const посмотрите на библиотеку .NET, какая IMO 9X_const - лучший способ решить соглашения об именах, чтобы 9X_const ваш код не выглядел неуместным.

76
0

Ответ #4

Ответ на вопрос: Соглашение об именах с # для констант?

Я по-прежнему использую верхний регистр 9X_const для значений const, но это больше по привычке, чем 9X_c#-language по какой-либо конкретной причине.

Конечно, это 9X_constant позволяет сразу увидеть, что что-то является 9X_c# константой. Вопрос ко мне: действительно 9X_visual-c# ли нам нужна эта информация? Помогает ли 9X_constants это нам как-нибудь избежать ошибок? Если 9X_variable-naming я присвою значение константе, компилятор 9X_c#-language скажет мне, что я сделал что-то глупое.

Мой 9X_naming-conventions вывод: возьмите верблюжью оболочку. Возможно, я 9X_const тоже изменю свой стиль ;-)

Изменить:

То, что что-то 9X_naming-conventions пахнет венгерским, на самом деле не веский аргумент, ИМО. Всегда 9X_naming-conventions должен быть вопрос: помогает или больно?

Бывают 9X_.cs-file случаи, когда венгерский помогает. Сейчас 9X_const их не так много, но они все еще существуют.

25
5

  • Современные IDE выявляют множество проблем перед компиляцией. Я не думаю, что распознавание константы по имени важно, иначе ...

Ответ #5

Ответ на вопрос: Соглашение об именах с # для констант?

Во-первых, венгерская нотация - это практика 9X_visual-c# использования префикса для отображения типа 9X_c#-language данных параметра или предполагаемого использования. Соглашения 9X_.cs-file Microsoft об именах для говорит нет венгерской 9X_c#.net нотации http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

Использование ЗАПИСИ НЕ рекомендуется, как 9X_c#.net указано здесь: Паскаль Кейс является приемлемым 9X_c#.net условием и КРИЧАТЬ ЗАГЛАВНЫМИ БУКВАМИ. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft 9X_constant также заявляет здесь, что ВЕРХНИЙ РЕГИСТР 9X_const можно использовать, если это сделано для 9X_variable-naming соответствия существующей схеме. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

Это в значительной 9X_variable-naming степени подводит итог.

19
1

  • Да, в венгерских обозначениях ...

Ответ #6

Ответ на вопрос: Соглашение об именах с # для констант?

В своей статье Constants (C# Programming Guide) Microsoft приводит следующий 9X_const пример:

class Calendar3 { const int months = 12; const int weeks = 52; const int days = 365; const double daysPerWeek = (double) days / (double) weeks; const double daysPerMonth = (double) days / (double) months; } 

Итак, для констант похоже, что Microsoft 9X_const рекомендует использовать camelCasing. Но обратите внимание, что 9X_variable-naming эти константы определены локально.

Возможно, больший 9X_const интерес представляет наименование видимых 9X_non-const извне констант. На практике Microsoft документирует 9X_naming-conventions свои общедоступные константы в библиотеке классов .NET как поля. Вот 9X_variable-naming несколько примеров:

  • Int32.MaxValue
  • String.Empty (на самом деле static readonly )
  • Math.PI
  • Math.E

Первые два являются примерами 9X_c#-language PascalCasing. Третий, похоже, следует за Microsoft Capitalization Conventions для 9X_c#-language двухбуквенного акронима (хотя pi не является 9X_casing-conventions акрионимом). И четвертый, кажется, предполагает, что 9X_constant правило для двухбуквенного акрионима распространяется 9X_constant на однобуквенный акроним или идентификатор, такой 9X_non-const как E (который представляет математическую 9X_casing-conventions константу e).

Кроме того, в своем документе 9X_naming-conventions о правилах использования заглавных букв 9X_c-sharp Microsoft прямо заявляет, что идентификаторы 9X_c# полей должны называться через PascalCasing, и приводит 9X_constants следующие примеры для MessageQueue.InfiniteTimeout и UInt32.Min:

public class MessageQueue { public static readonly TimeSpan InfiniteTimeout; } public struct UInt32 { public const Min = 0; } 

Заключение: используйте PascalCasing для общедоступных констант (которые задокументированы 9X_c-sharp как поля const или static readonly).

Наконец, насколько мне известно, Microsoft 9X_c#.net не поддерживает определенные соглашения 9X_c-sharp об именах или использовании заглавных букв 9X_c-sharp для частных идентификаторов, как показано в примерах, представленных 9X_c# в вопросе.

18
1

  • Статья, на которую указывает этот ответ, была изменена. Константы теперь общедоступны и были переведены на PascalCased. Учитывая оба этих изменения, это не помогает ...

Ответ #7

Ответ на вопрос: Соглашение об именах с # для констант?

Оставьте венгерский язык венграм.

В этом 9X_c# примере я бы даже пропустил окончательную 9X_constants статью и просто выбрал

private const int Answer = 42; 

Это ответ или это 9X_constants ответ?

* Правка на языке Паскаля сделана 9X_visual-c# строго корректной, однако я подумал, что 9X_non-const вопрос требует более подробного ответа на 9X_non-const life, the universe and everything.

15
2

  • В данном конкретном случае это * ответ *. Но только потому, что я очень люблю читать Д. Адам ...

Ответ #8

Ответ на вопрос: Соглашение об именах с # для констант?

Я считаю, что ALL_CAPS заимствован из методов 9X_naming-conventions работы C и C++. В этой статье here объясняется, как 9X_c-sharp возникли различия в стилях.

В новой среде 9X_const IDE, такой как Visual Studio, легко определить 9X_constant типы, область видимости и их постоянство, поэтому 9X_c#.net в этом нет строгой необходимости.

Программы 9X_csharp FxCop и Microsoft StyleCop помогут дать вам рекомендации 9X_casing-conventions и проверить ваш код, чтобы все работали 9X_naming-conventions одинаково.

9
0

Ответ #9

Ответ на вопрос: Соглашение об именах с # для констант?

На самом деле я предпочитаю здесь PascalCase, но 9X_variable-naming по привычке я виноват в UPPER_CASE ...

8
0