Вы группируете частные поля или помещаете их с их собственностью? - PullRequest
5 голосов
/ 08 ноября 2008

Я видел (и использовал) в различных проектах этот макет, с группой полей и группой свойств:

private int MyIntField;
private string MyStringField;

public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}

И я также встречал этот макет с полями рядом с их свойством:

private int MyIntField;
public int MyInt { 
    get { return MyIntField; }
    set { MyIntField = value; }
}    

private string MyStringField;
public string MyString { 
    get { return MyStringField; }
    set { MyStringField = value; }
}

Есть ли причина считать одно лучше другого? Я думаю, что большинство стандартов кодирования рекомендуют Вариант № 1, но иногда бывает удобно иметь поле рядом со свойством, которое с ним работает.

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

Ответы [ 6 ]

7 голосов
/ 08 ноября 2008

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

4 голосов
/ 08 ноября 2008

Я группирую их в верхней части класса.

Фактически единственное, что находится над моим личным атрибутом, это все константы класса.

3 голосов
/ 08 ноября 2008

Мне нравится группировать поля сверху и свойства где-то еще. Это также то, что Microsoft StyleCop рекомендует.

2 голосов
/ 08 ноября 2008

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

1 голос
/ 08 ноября 2008

В качестве дополнительного примечания, куда вписываются авто свойства?

C # 3.0 авто-свойства - полезно или нет?

1 голос
/ 08 ноября 2008

Чтобы повторить то, что сказал Кенни выше, все дело в стандартах кодирования вашей организации. Трудно объективно классифицировать один стиль над другим, хотя, похоже, у каждого свое мнение.

Обычно я предпочитаю иметь группы данных и методов по модификатору доступа, поэтому в этом случае я бы предпочел вариант № 1. Это должно подчеркнуть интерфейс, а не дизайн. То есть я мог бы прозрачно изменить реализацию модификатора MyInt в будущем (возможно, мне действительно не нужно хранить резервную переменную).

...