Несколько вопросов по соглашению об именах C # - PullRequest
7 голосов
/ 05 августа 2009

1) Какова политика объявления переменной? Если всегда использовать ключевое слово private, или это нормально, пропустить его?

string MyVar1;

против

private string MyVar1;

Единственная причина, которую я вижу, заключается в том, что Microsoft однажды может изменить модификаторы доступа по умолчанию на public вместо private.

Где говорит, что частное является необязательным? Любые ссылки на MSDN ?

2) Политика именования констант?

Я всегда использовал заглавные буквы при написании константы, но друг сказал мне, что это против политики именования Microsoft, не так ли?

const string MYVAR1;

против

const string myVar1;

3) Паскаль или верблюд?

Лично я думаю, что Верблюд просто выглядит безобразно.

Ответы [ 15 ]

22 голосов
/ 05 августа 2009

1) Ключевое слово private необязательно. Я очень сомневаюсь, что Microsoft когда-либо изменит видимость полей по умолчанию, поскольку это будет серьезное, серьезное изменение (не говоря уже о глупости). Пропуск ключевого слова private - дело личного вкуса.

2) Не используйте «кричащие» константы - следуйте соглашению фреймворка и используйте паскаль (например, ThisIsAConstant предпочтительнее, чем THIS_IS_A_CONSTANT).

13 голосов
/ 05 августа 2009
5 голосов
/ 05 августа 2009

Не отвечая на ваш вопрос напрямую, но, возможно, вас заинтересует Microsoft StyleCop . Это инструмент для анализа вашего исходного кода в отношении правил стиля и согласованности. По умолчанию он налагает руководящие указания по стилю Microsoft.

2 голосов
/ 17 сентября 2010

Официальная рекомендация для именования констант в соответствии с руководящими принципами MS, поскольку никто еще не определил ее полностью, это:

  • Используйте все заглавные буквы для имен с одним или двумя символами , т.е. System.Math.PI, System.Math.E
  • Для , равного 3 символам или более, используйте PascalCasing .
1 голос
/ 05 августа 2009

Использовать регистр Паскаля в именах полей.

Из .NET Framework Руководство разработчика Имена членов типа

Использовать корпус Pascal для всех имена членов, типов и пространств имен состоящий из нескольких слов.

Обратите внимание, что это правило не распространяется на поля экземпляра. По причинам, которые подробно описано в разделе «Дизайн членов» Руководящие принципы, вы не должны использовать публичные Поля экземпляра.

Из Руководство разработчика по .NET Framework Соглашения о капитализации

Обратите внимание на подразумеваемый стандарт обсадных труб Паскаля в постоянном наименовании.

НЕ используйте константные поля для констант это никогда не изменится.

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

public struct Int32 {
  public const int MaxValue = 0x7fffffff;
  public const int MinValue = unchecked((int)0x80000000);
}

Из Руководства по проектированию инфраструктуры: соглашения, идиомы и шаблоны для многократно используемых библиотек .NET, второе издание, стр. 161

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

1 голос
/ 05 августа 2009

Лично мне бы понравилось, если бы константы были ALL_CAPS, как в некоторых других языках ... Я думаю, что это быстрый и простой способ определить константы. Тем не менее, поскольку другие константы встроены в каркас UsePascalCasing, вам тоже следует. Последовательность очень важна.

Что касается "Паскаля против верблюда", вы сталкиваетесь с той же проблемой. Если бы вы просто программировали самостоятельно, вы могли бы делать все, что хотели. Но поскольку вы используете ранее существовавший фреймворк, для согласованности вы должны эмулировать тот же стиль. Кроме того, как только вы привыкнете к этому, вы, вероятно, обнаружите, что соблюдение того же набора правил действительно поможет, потому что вы сразу узнаете, что что-то является параметром или локальной переменной (camelCasing) по сравнению со свойством или константой (PascalCasing) .

1 голос
/ 05 августа 2009

private не является обязательным, поэтому вы можете пропустить его.

Однако, если в вашем классе есть сочетание личных, защищенных и общедоступных членов данных, было бы неплохо указать, что член является частным для удобства чтения.

1 голос
/ 05 августа 2009

Я сомневаюсь, что Microsoft когда-нибудь изменит поведение по умолчанию для переменных-членов C #. Я хотел бы объявить вещи частными, вы хотите, чтобы они были частными, и явно объявить вещи общедоступными, которые вы хотите сделать общедоступными просто для ясности, если ничего больше.

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

1 голос
/ 05 августа 2009

Также имена частных полей должны быть в случае верблюда, необязательно с префиксом _ или m_:

    private int count;
or
    private string _name;
or
    private decimal m_price;
1 голос
/ 05 августа 2009

private - необязательно, но дополнительный набор текста. Мне нравится это пропускать.

Что касается постоянных, это зависит от ваших предпочтений и с кем вы работаете. Но если вы сомневаетесь, посмотрите на .NET Framework и как они называют константы.

...