Acessando membros em sua própria classe: use propriedades (automáticas) ou não?
Eu criei essa "pergunta" como um wiki da comunidade, porque não há resposta certa ou errada. Gostaria apenas de saber como a comunidade se sente sobre esse problema específico.
Quando você tem uma classe com variáveis de instância e também criou propriedades que são simplesmente getters e setters para essas variáveis de instância, você deve usar as propriedades dentro de sua própria classe ou sempre deve usar a variável de instância?
Ter propriedades automáticas no C # 3.0 tornou essa uma decisão ainda mais difícil.
Usando propriedades:
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";
// ...
}
}
Usando variáveis de instância:
public class MyClass
{
private string _name;
public string Name { get { return _name; } set { _name = value; } }
public void Action()
{
string localVar = _name;
// ...
_name = "someValue";
// ...
}
}
(para aqueles que odeiam prefixos de membros, peço desculpas)
Pessoalmente, eu sempre uso o último (variáveis de instância), porque sinto que as propriedades devem ser usadas apenas porde outros aulas, não você mesmo. É por isso que também fico longe de propriedades automáticas.
Obviamente, as coisas mudam quando o configurador de propriedade (ou getter) faz um pouco mais do que apenas agrupar a variável de instância.
Existem razões convincentes para escolher um ou outro?