С# для обозначения констант?
private const int THE_ANSWER = 42;
или
private const int theAnswer = 42;
Лично я думаю, что с современными IDE мы должны пойти с camelCase, поскольку ALL_CAPS выглядит странно. Как вы думаете?
Ответы
Ответ 1
Рекомендуемое соглашение об именовании и использовании заглавных букв заключается в использовании регистров Pascal для констант (у Microsoft есть инструмент с именем StyleCop, который документирует все предпочтительные соглашения и может проверить ваш источник на соответствие - хотя это немного слишком анально для сохранения вкусы у многих). например,
private const int TheAnswer = 42;
Соглашение об использовании заглавных букв в Паскале также задокументировано в Руководстве по проектированию Microsoft.
Ответ 2
Собственно, это
private const int TheAnswer = 42;
По крайней мере, если вы посмотрите на библиотеку .NET, какая IMO - лучший способ определить соглашения об именах, - поэтому ваш код не выглядит неуместным.
Ответ 3
Визуально верхний регистр - это путь. Это так узнаваемо.
Ради уникальности и не оставляя шансов угадать, я голосую за UPPER_CASE!
const int THE_ANSWER = 42;
Примечание: верхний регистр будет полезен, когда константы должны использоваться в одном и том же файле вверху страницы и для целей intellisense; однако, если их переместить в независимый класс, использование верхнего регистра не будет иметь большого значения, например:
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;
}
Ответ 4
Я все еще придерживаюсь прописных значений для констант, но это больше по привычке, чем по какой-либо конкретной причине.
Конечно, легко видеть, что что-то является константой. Вопрос для меня: действительно ли нам нужна эта информация? Помогает ли это нам каким-либо образом избежать ошибок? Если я назначу значение const, компилятор скажет мне, что я сделал что-то немое.
Мой вывод: Идите с корпусом верблюда. Возможно, я тоже изменю свой стиль: -)
Edit:
То, что что-то пахнет венгерским, на самом деле не является веским аргументом, ИМО. Вопрос всегда должен быть: помогает ли он или ему больно?
Бывают случаи, когда венгерский помогает. Не так много сегодня, но они все еще существуют.
Ответ 5
Во-первых, венгерская нотация - это практика использования префикса для отображения типа данных параметров или предполагаемого использования.
Соглашения об именовании Microsoft для "нет" для венгерской нотации
http://en.wikipedia.org/wiki/Hungarian_notation
http://msdn.microsoft.com/en-us/library/ms229045.aspx
Использование UPPERCASE не рекомендуется, как указано здесь:
Паскаль Кейс - приемлемая конвенция и СКРИМИНГ.
http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming
В Microsoft также указывается, что UPPERCASE можно использовать, если это делается для соответствия существующей схеме.
http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx
Это в значительной степени подводит итог.
Ответ 6
Поставьте венгерцев венграм.
В этом примере я бы даже отказался от окончательной статьи и просто пошел с
private const int Answer = 42;
Это ответ или это ответ?
* Сделал редактирование как Паскаль строго правильным, однако я думал, что вопрос требует больше ответа на жизнь, вселенную и все такое.
Ответ 7
В своей статье Константы (Руководство по программированию в С#)Microsoft приводит следующий пример:
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 рекомендует использовать camelCasing
. Но обратите внимание, что эти константы определены локально.
Возможно, наименование внешне видимых констант представляет больший интерес. На практике Microsoft документирует свои открытые константы в библиотеке классов .NET как поля. Вот несколько примеров:
Первые два примера PascalCasing
. Похоже, что третий соответствует Microsoft Соглашениям по капитализации для двухбуквенного аббревиатуры (хотя pi не является акрионимом). И четвертый, кажется, предполагает, что правило для двухбуквенного акрионима распространяется на однобуквенное сокращение или идентификатор, такой как E
(который представляет математическую константу e).
Кроме того, в своем документе "Соглашения о капитализации" Microsoft прямо заявляет, что идентификаторы полей должны быть названы через PascalCasing
, и приводит следующие примеры для MessageQueue.InfiniteTimeout и UInt32.Min:
public class MessageQueue
{
public static readonly TimeSpan InfiniteTimeout;
}
public struct UInt32
{
public const Min = 0;
}
Вывод: используйте PascalCasing
для открытых констант (которые задокументированы как поля const
или static readonly
).
Наконец, насколько мне известно, Microsoft не поддерживает конкретные соглашения об именовании или использовании заглавных букв для частных идентификаторов, как показано в примерах, представленных в вопросе.
Ответ 8
Я полагаю, что ALL_CAPS взят из способа работы C и C++. В этой статье здесь объясняется, как возникли различия в стиле.
В новой среде IDE, такой как Visual Studio, легко определить типы, область действия и, если они постоянны, это не является строго обязательным.
Программное обеспечение FxCop и Microsoft StyleCop поможет вам получить рекомендации и проверить код, чтобы все работали одинаково.
Ответ 9
На самом деле я предпочитаю PascalCase здесь, но по привычке я виноват в UPPER_CASE...