C # для обозначения констант?
private const int THE_ANSWER = 42;
или
private const int theAnswer = 42;
Лично я думаю, что с современными IDE мы должны пойти с camelCase, поскольку ALL_CAPS выглядит странно. Как вы думаете?
Рекомендуемое соглашение об именах и капитализации состоит в том, чтобы использовать оболочку Pascal для констант (у Microsoft есть инструмент с именем StyleCop, который документирует все предпочтительные соглашения и может проверить ваш источник на соответствие требованиям, хотя он немного слишком ненасытен для многих вкусов). например
private const int TheAnswer = 42;
Соглашение о капитализации Pascal также задокументировано в Microsoft Framework Design Guidelines
На самом деле, это
private const int TheAnswer = 42;
По крайней мере, если вы посмотрите на библиотеку .NET, какая ИМО – лучший способ определить соглашения об именах – так что ваш код не выглядит неуместным.
Визуально, верхний случай – это путь. Это так узнаваемо. Ради уникальности и не оставляя никаких шансов для угадывания, я голосую за UPPER_CASE!
const int THE_ANSWER = 42;
Примечание . Верхний регистр будет полезен, если константы должны использоваться в одном файле в верхней части страницы и для целей intellisense; однако, если они должны были быть перемещены в независимый class, использование Upper Case не имеет большого значения, например:
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 might lose its charm private void DoSomething(){ var getCons1 = Constant.Cons1; var getCons2 = Constant.coNs2; var getCons3 = Constant.cOns3; var getCons4 = Constant.CONS4; }
Я по-прежнему придерживаюсь прописных значений const, но это больше по привычке, чем по какой-либо конкретной причине.
Конечно, легко понять, что что-то является константой. Вопрос для меня: действительно ли нам нужна эта информация? Помогает ли это нам каким-либо образом избежать ошибок? Если я назначу значение const, компилятор скажет мне, что я сделал что-то немое.
Мой вывод: Идите с корпусом верблюда. Может быть, я тоже изменю свой стиль 😉
Редактировать:
То, что что-то пахнет венгерским, на самом деле не является веским аргументом, ИМО. Вопрос всегда должен быть: помогает ли ему или ему больно?
Бывают случаи, когда венгерский помогает. Не так много сегодня, но они все еще существуют.
Во-первых, венгерская нотация – это практика использования префикса для отображения типа данных параметра или предполагаемого использования. Соглашения об именовании Microsoft не говорят о венгерской нотации http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx
Использование UPPERCASE не рекомендуется, как указано здесь: Pascal Case является приемлемым соглашением и SCREAMING CAPS. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming
Microsoft также заявляет здесь, что UPPERCASE может использоваться, если это делается для соответствия существующей схеме. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx
Это в значительной степени подводит итог.
Поставьте венгров в венгры.
В этом примере я бы даже отказался от окончательной статьи и просто пошел с
private const int Answer = 42;
Это ответ или это ответ?
* Сделал редактирование как Паскаль строго правильным, однако я думал, что вопрос требует больше ответа на жизнь, вseleniumную и все такое .
В статье « Константы» (Руководство по программированию на C #) 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 документирует свои общедоступные константы в библиотеке classов .NET как поля . Вот некоторые примеры:
- Int32.MaxValue
- String.Empty (фактически,
static readonly
) - Math.PI
- Math.E
Первые два являются примерами PascalCasing
. Третий, по-видимому, придерживается Microsoft Capitalization Conventions для двухбуквенного сокращения (хотя 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
для общедоступных констант (которые документируются как константные или static readonly
поля только для static readonly
).
Наконец, насколько я знаю, Microsoft не защищает конкретные соглашения об именах или капитализации для частных идентификаторов, как показано в примерах, представленных в вопросе.
На самом деле я предпочитаю PascalCase здесь, но по привычке я виноват в UPPER_CASE …
Я полагаю, что ALL_CAPS взята из C и C ++. В этой статье объясняется, как возникли различия в стиле.
В новых IDE, таких как Visual Studio, легко определить типы, область видимости и константы, поэтому это не является строго необходимым.
Программное обеспечение FxCop и Microsoft StyleCop поможет вам дать рекомендации и проверить свой код, чтобы все работали одинаково.