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 поможет вам дать рекомендации и проверить свой код, чтобы все работали одинаково.

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