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

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

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

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

4 ответа

Решение

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

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

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

public int Foo { get; set; }

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

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

Май? Так как это влияет только на людей в вашей команде, вы должны выяснить, что они считают лучшим и пойти с этим. 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;

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

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

Другие вопросы по тегам