Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida C#

Pessoal, estou com a seguinte dúvida: O exercício pede para transformar os atributos em propriedades, mas 4 desses atributos possuem public para leitura e para inclusão, conforme o código abaixo:

   public double Saldo { get; private set; }
        public Cliente Titular { get; set; }
        public int Numero { get; set; }
        public string Cpf { get; set; }
        public int Agencia { get; set; }

Minha dúvida é: Nesse caso, não seria mais interessante deixar esses atributos como public (não transformá-los em propriedades) e manter apenas Saldo como property?

3 respostas
solução!

Olá.

Properties nos dá a facilidade de limitar o acesso à leitura e/ou escrita, além de nos proporcionar a possibilidade de adicionar lógica extra direto no get ou set, o que fica muito mais fácil de dar manutenção. Você pode estar imaginando "Ah, posso deixar como field (atributo) e alterar se precisar que vire property". Um dos problemas com isso é precisar recompilar todo o código, o que pode ser custoso em projeto grande. E por fim: properties são o meio correto pra trabalhar com data binding. Ou seja, caso você esteja criando models que refletem o seu banco de dados e vai usar algum framework pra fazer data binding desses dados (mapeamento automático dos dados), o ideal é trabalhar com properties, pois a maioria dos frameworks não funciona direito com fields pra fazer o data binding.

Você tem um controle maior de acesso usando propriedades, podendo estabelecer regras específicas pra cada uma delas.

No seu exemplo

private double _Saldo;

public double Saldo
{
    get
     { 
            return this._Saldo;
    }
    set 
    {
        //você poderia ter uma condição aqui para limitar a escrita na propriedade, por exemplo
         this._Saldo = value
    }
}

Dessa forma, em algumas situações, vale a pena trabalhar com propriedades.

Trocando em miúdos, se você tiver uma situação onde o "set" é privado, você pode criar um field e modificá-lo apenas por meio de propriedades, fazendo as devidas validações antes de sua alteração.

Obrigado galera!