Donde trabajo, se desaconseja el uso de Propiedades. Tenemos herramientas de generación de código para "acelerar las cosas". Todos los datos del objeto terminan siendo campos públicos. Si solicita propiedades de todos modos, obtendrá algo como esto:
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
No puedo pensar en un argumento razonable para hacer esto. ¿Hay alguna buena razón para usar tanto una propiedad pública con un campo público?
object-oriented
.net
Daniel
fuente
fuente
Respuestas:
No.
No hay una buena razón para esto. Eso:
Utilice las propiedades implementadas automáticamente en su lugar.
fuente
Uno de los principios orientados a objetos fundamentales se llama encapsulación. Dice que cada objeto debe proteger sus datos de modificaciones externas.
Esto se hace haciendo que todos los campos sean privados y, si es posible, también que todos los establecedores de propiedades sean privados. En su lugar, debe introducir el comportamiento agregando métodos que se utilizan para modificar el estado.
Lo que estás haciendo está muy mal. En esencia, es solo una programación funcional donde todas las clases son solo contenedores de datos o una forma de agrupar métodos juntos. El primero es un antipatrón llamado Modelo de dominio anémico .
El problema con eso es que la lógica de negocios para cada modelo de dominio se extiende por varios lugares en su aplicación (es decir, cada lugar donde se modifica el objeto). Por lo tanto, es difícil encontrar errores relacionados con las reglas de su negocio, ya que debe analizar cada lugar donde se usa el objeto, en lugar de analizarlo solo.
He blogueado sobre esto aquí: http://blog.gauffin.org/2012/06/protect-your-data/
fuente
En resumen: no , no hay justificación para eso. Las propiedades públicas tienen más usos comerciales que los campos públicos.
Algunos de los muchos usos de las propiedades son:
Como ya se sugirió, usar las propiedades automáticas es otra forma inteligente de hacerlo.
Más detalles en MSDN - Propiedades de VB.NET
fuente