Onde trabalho, o uso de Propriedades é desencorajado. Temos ferramentas de geração de código para "acelerar as coisas". Todos os dados do objeto acabam sendo campos públicos. Se você solicitar propriedades de qualquer maneira, obterá algo como isto:
Public sFoo as String
Public Property Foo as String
Get
Return sFoo
End Get
Set(ByVal value as String)
sFoo = value
End Set
End Property
Não consigo pensar em um argumento razoável para fazer isso. Existem boas razões para usar uma propriedade pública com um campo público?
object-oriented
.net
Daniel
fonte
fonte
Respostas:
Não.
Não há uma boa razão para isso. Isto:
Use Propriedades implementadas automaticamente .
fonte
Um dos princípios orientados a objetos fundamentais é chamado de encapsulamento. Ele diz que cada objeto deve proteger seus dados contra modificações externas.
Isso é feito tornando todos os campos privados e, se possível, também torne todos os configuradores de propriedades privados. Em vez disso, você deve introduzir o comportamento adicionando métodos usados para modificar o estado.
O que você está fazendo é muito errado. Em essência, é apenas uma programação funcional, onde todas as classes são apenas contêineres de dados ou uma maneira de agrupar métodos juntos. O primeiro é um anti-padrão chamado Modelo de Domínio Anêmico .
O problema disso é que a lógica de negócios de cada modelo de domínio está espalhada por vários locais do seu aplicativo (ou seja, todos os locais onde o objeto é modificado). Portanto, é difícil encontrar erros relacionados às regras de negócios, pois você precisa analisar todos os lugares em que o objeto é usado, em vez de apenas analisar o próprio objeto.
Eu escrevi sobre isso aqui: http://blog.gauffin.org/2012/06/protect-your-data/
fonte
Resumindo: não , não há justificativa para isso. As propriedades públicas têm mais usos comerciais do que campos públicos.
Alguns dos muitos usos de propriedades são:
Como já sugerido, o uso de propriedades automáticas é outro caminho inteligente a seguir.
Mais detalhes nas propriedades do MSDN - VB.NET
fonte