Соглашения о форматировании в C # - PullRequest
2 голосов
/ 03 октября 2009

В книге, которую я читал, они используют заглавную букву для открытых методов и свойств. Я знаю, что есть некоторые другие соглашения, такие как "_" перед частными переменными. Мне не нравится этот способ, и мне нравится этот способ лучше, но мне просто интересно знать, что есть в методе.

Так

public void MyMethod()
{
}

public string MyProperty {get; set;

}

и для частного

private void myMethod()
{
}

А как насчет метода?

как

public void MyMethod()
{
   string MyVariable = null;
   // or
   string myVairable = null;
}

Также как насчет того, если у вас есть глобальная переменная вроде

public class Test
{
   private string bob;

   public Test()
   {
      bob = null;
   }
}

так должно ли оно быть в нижнем регистре (поскольку оно является частным)? Кроме того, стоит отметить, что было бы лучше сделать это свойством, но вместо публичной собственности просто сделать его частным.

Ответы [ 7 ]

5 голосов
/ 03 октября 2009

Вот ваши примеры кода, какими они были бы, если бы они следовали официальным рекомендациям по стилю кода Microsoft (обеспечивается StyleCop и FxCop)

public void MyMethod()
{
}

public string MyProperty { get; set; }

private void MyMethod()
{
}

public void MyMethod()
{
   string myVariable = null;
}

public class Test
{
   private string bob;

   public Test()
   {
      this.bob = null;
   }
}

Некоторые основные характеристики из спецификации: все поля должны быть private и строчными (кроме случаев, когда они постоянны). Все методы должны быть заглавными, независимо от доступа. Если вы хотите выставить поле (то есть сделать его public или protected), используйте свойство (которое должно быть написано заглавными буквами, если оно защищено или является общедоступным). Если у вас есть автоматические уровни get и set для свойств (то есть просто get; и set;), они могут быть в одной строке, в противном случае - в отдельных строках (если кода больше). Всегда называйте поля, начинающиеся со строчной буквы a-z, а не подчеркивания. Брекеты должны быть на новой линии. Всегда указывайте нестатические члены (то есть свойства, методы, поля) с this., чтобы отличать их от переменных и избежать неоднозначности.

Там огромный список, но они наиболее актуальны для ваших примеров. Посмотрите на code.msdn.microsoft.com / sourceanalysis

И то, что вы называете «глобальным» в своем вопросе, на самом деле является «полем». Они никогда не должны быть выставлены (как я уже говорил выше), потому что вы выставляете свою реализацию, когда на самом деле ваше поведение - это все, что вы должны выставлять на интерфейсе типу. Свойства позволяют вам указать интерфейс, и, даже если они теперь реализованы как автоматические свойства, вы можете изменить уровни get и set позже, не меняя интерфейс.

2 голосов
/ 03 октября 2009

Я рекомендую Microsoft Naming Guidelines:

http://msdn.microsoft.com/en-us/library/ms229002.aspx

Интересно, что они не затрагивают тему того, как назвать закрытый атрибут, скрытый за публичной собственностью. Я склоняюсь к префиксу с подчеркиванием.

Как правило, CamelCase и строчная первая буква, если это параметр.

2 голосов
/ 03 октября 2009

Я считаю, что условные обозначения кодов должны соответствовать следующим правилам:

  1. Продвижение читабельного кода.
  2. Если вы работаете в команде, делайте все, на что команда соглашается.
  3. Если вы работаете один, делайте все, что заставляет вас чувствовать себя тепло и нечетко внутри.

В противном случае ... это не имеет значения, если правила не навязаны вам высшей силой.

Лично я предпочитаю вариант camelCase и префикс личных переменных с помощью m _.

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

StringBuilder duck = new StringBuilder(4096);
duck.Append(palmtree.ToString());

Это заставляет меня смеяться позже.

1 голос
/ 03 октября 2009

В дополнение к тому, что сказал Сникер, я бы добавил, чтобы быть последовательным.

Вы также можете проверить Общие правила именования в MSDN.

0 голосов
/ 03 октября 2009

Для типов, методов и свойств вы используете PascalCase (заглавные буквы начинаются с заглавных букв в начале словарных частей)

Для переменных вы всегда используете camelCase (начинается строчными буквами, прописными буквами в начале словарных частей).

Если переменная является переменной-членом, некоторые люди начинают имя с символа подчеркивания _, чтобы различать переменную-член и локальную переменную, но вы также можете использовать для этого разделитель «this».

0 голосов
/ 03 октября 2009

Еще один надежный ресурс для соглашений по именованию в C # - это Стандарт кодирования IDesign . Это в значительной степени согласуется со стандартом кодирования StyleCop / Microsoft, с небольшими отличиями. Оба согласны с тем, что локальные переменные и аргументы метода должны быть в верблюжьей оболочке, как в

    void MyMethod(int someNumber)  
    {int anotherNumber = 1;}

В общем, я не видел много вариантов по этому вопросу, большинство людей, похоже, следуют этому соглашению.
Что касается закрытых переменных / полей, то здесь больше дисперсии. StyleCop выступает за верблюжий покров, а Juval - формат m_MyPrivateVariable. Я также видел, как люди используют _MyPrivateVariable.

0 голосов
/ 03 октября 2009

Global: Начинается с заглавной буквы

Приват: Начинается со строчной буквы

Внутренние переменные: начинаются с _.

Это то, что я прочитал из книги несколько лет назад. Так программисты используют.

...