Você deve acessar uma variável dentro da mesma class através de uma propriedade?

Se você tem uma propriedade que obtém e define uma variável de instância, normalmente você sempre usa a propriedade de fora dessa class para acessá-la.

A minha pergunta é se você também deve fazê-lo sempre dentro da aula? Eu sempre usei a propriedade se existe uma, mesmo dentro da class, mas gostaria de ouvir alguns argumentos a favor e contra qual é o mais correto e por quê.

Ou é apenas uma questão de padrões de codificação sendo usados ​​no projeto?

Um dos argumentos mais fortes para acessar variables ​​locais (escopo de class) por meio de propriedades é que você adiciona um nível de abstração em sua class. Se você alterar qualquer lógica referente a como esse campo é armazenado, o resto do seu código não será afetado.

Por exemplo, você pode alterar isso de uma variável local para uma propriedade de um object filho, para uma chamada de database, para uma chamada de serviço da Web, para uma propriedade estática em uma class e assim por diante. Ao fazer a alteração, você recebe um único ponto de alteração, a propriedade, e não precisa atualizar o restante da sua class, pois todos eles usam a propriedade.

Além disso, o uso da propriedade permite aplicar regras de negócios ao valor da propriedade, em vez de ter que aplicar a mesma regra em cada local em que você acessa diretamente o campo. Mais uma vez, o encapsulamento

Com a introdução de propriedades automáticas, há ainda menos razões para explicitamente ter uma variável local, a menos que você precise aplicar regras de negócio no get / set

Depende se você deseja aplicar qualquer lógica implementada na propriedade setter e, portanto, você realmente precisa decidir caso a caso.

Quando você vai diretamente para o campo privado, você sabe que o campo está sendo definido exatamente para o que você diz.

Quando você passa pela Propriedade, o valor é definido de acordo com a lógica do setter, portanto, você obtém quaisquer regras de negócios ou validação que deseja sobre os valores atribuídos a esse campo.

É muito difícil chegar a uma regra sobre quando fazer isso é “correto”, sobre o único que eu diria que eu sigo é que na boot do construtor eu praticamente nunca usaria a Propriedade.

Eu acho que é puramente preferência.

No entanto, eu me vejo usando as propriedades muito mais em c # 3.0 com o suporte de auto-propriedade:

class Foo { public string Value { get; set; } public void Write() { Console.Write(Value); } } 

Geralmente, dependendo dos padrões de codificação do projeto, eu uso um “_” ou “m” precedendo o nome dos meus atributos de class privada. (Como abaixo)

 private int mVariable; private int _Variable; 

Com aqueles na frente da variável eu reconheço imediatamente que estou lidando com uma variável interna para a class. Então, quando se trata de depurar mais tarde, eu ou outra pessoa podemos reconhecer imediatamente que o código está lidando com uma variável privada interna e fazer um ajuste. Então, tudo se resume a legibilidade para mim.

Sim, eu acho que você deveria usar propriedades internamente em suas classs sempre que possível. As propriedades são mais flexíveis e permitem adicionar lógica para validar seu valor em um local central.

Você também pode atrasar a boot do campo para sempre que a propriedade for usada em vez de ser forçada a fazê-lo no construtor (ou em qualquer lugar em que o campo seja usado). Exemplo:

 class Test { private int _checksum = -1; private int Checksum { get { if (_checksum == -1) _checksum = calculateChecksum(); return checksum; } } } 

Sempre Use Propriedades, Aqui estão algumas das razões

  1. Fácil de usar. No visual Studio, você pode usar o “Guia Tabulação da Impressora”. Você receberá o snippet de propriedade
  2. Propriedades são elementos de linguagem que são acessados ​​como se fossem membros de dados
  3. Classes de estrutura .NET usa-lo, as classs de código de binding de dados nas propriedades de suporte do .NET Framework,
  4. Propriedades possuem todos os resources de linguagem dos methods. Propriedades podem ser virtuais