Что хорошее соглашение о присвоении имен состоит в том, чтобы дифференцировать имя класса от свойства в C#?

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

Используя конвенции StyleCop, я нахожу, что у меня часто есть имя свойства, которое трудно сделать отличающимся, чем имя класса, к которому оно получает доступ. Например:

public class ProjectManager
{
 // Stuff here
}

public class OtherClass
{
     private ProjectManager ProjectManager { get; set; }
}

Это компилирует и работает, но кажется, что был бы простой способ перепутать вещи, даже с использованием "этого".

10
задан JaredPar 18 May 2010 в 22:31
поделиться

3 ответа

На самом деле это очень распространенный шаблон в программировании .Net. В частности, это касается типов и членов перечислений, поскольку это рекомендуемый способ программирования .Net Design Guidelines.

Ссылка на руководство по проектированию 4.0

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

11
ответ дан 3 December 2019 в 21:58
поделиться

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

public class Person
{
  // Stuff here
}

public class OtherClass
{
  private Person ProjectManager { get; set; }
}

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

1
ответ дан 3 December 2019 в 21:58
поделиться

Это типичное соглашение об именах, когда в любом заданном классе будет только одно свойство типа ProjectManager . Это перестает сбивать с толку, потому что нет другого использования типа ProjectManager .

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

4
ответ дан 3 December 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: