Я создал этот «вопрос» как вики-сообщество, потому что нет правильного или неправильного ответа. Я только хотел бы знать, как сообщество относится к этой конкретной проблеме.
Если у вас есть класс с переменными экземпляра, и вы также создали свойства, которые являются просто геттерами и сеттерами для этих переменных экземпляра, следует ли вам использовать свойства внутри вашего собственного класса или всегда следует использовать переменную экземпляра?
Наличие авто-свойств в C # 3.0 сделало это решение еще сложнее.
Использование свойств:
public class MyClass
{
private string _name;
// could be an auto-property of-course
public string Name { get { return _name; } set { _name = value; } }
public void Action()
{
string localVar = Name;
// ...
Name = "someValue";
// ...
}
}
Использование переменных экземпляра:
public class MyClass
{
private string _name;
public string Name { get { return _name; } set { _name = value; } }
public void Action()
{
string localVar = _name;
// ...
_name = "someValue";
// ...
}
}
(для тех, кто ненавидит префиксы членов, я прошу прощения)
Лично я всегда использую последнее (переменные экземпляра), потому что считаю, что свойства должны использоваться только другими классами, а не вами. Вот почему я по большей части держусь подальше от авто-недвижимости.
Конечно, все меняется, когда установщик свойств (или получатель) делает немного больше, чем просто оборачивает переменную экземпляра.
Есть ли веские причины для выбора того или другого?