Стиль C #: Могут ли свойства быть сгруппированы с их вспомогательными полями? - PullRequest
4 голосов
/ 20 мая 2011

Мне нравится организовывать такие простые свойства, как это:

private int foo;
public int Foo
{
    get { return foo; }
    set
    {
        // validate value
        foo = value;
    }
}

Я играл с StyleCop , и он кричит мне на размещение полей после конструкторов.Является ли этот стиль общепринятым, если на поле никогда не ссылаются за пределами свойства?Примечание: я понимаю, что в это вовлечены личные предпочтения, но мне интересно, существует ли общее согласие по этому вопросу.

Ответы [ 4 ]

6 голосов
/ 20 мая 2011

Да, это кажется мне разумным.

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

3 голосов
/ 20 мая 2011

Если ваши свойства будут иметь простой доступ к данным, рассмотрите возможность использования автоматических свойств:

public int Foo { get; set; }

Компилятор создаст закрытую переменную-член за кулисами от вашего имени.

Специально к вашему вопросу, не кладите слишком много в инструменты вроде ReSharper или StyleCop. Некоторые из способов, которыми они форматируют код, и вещи, на которые они жалуются, действительно являются вопросом предпочтения. Я не помещаю переменные-члены рядом с их общими свойствами, но я вижу, как это было бы удобно.

1 голос
/ 20 мая 2011

Это может быть вопросом предпочтения, но это кажется лучше, чем смешивать их с частными членами.

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

1 голос
/ 20 мая 2011

Май? Так как это влияет только на людей в вашей команде, вы должны выяснить, что они считают лучшим и пойти с этим. Style Cop часто немного за борт по своим рекомендациям.

Я обычно ставлю их после свойства, так как пространство выше зарезервировано для документации.

// placed up here, it looks kinda weird, imho
// private int foo;
/// <summary>
/// The index of the Foo in the <see cref="Bar"/>
/// </summary>
public int Foo
{
    get { return foo; }
    set
    {
        // validate value
        foo = value;
    }
}
private int foo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...