¿Debes acceder a una variable dentro de la misma clase a través de una propiedad?

Si tiene una Propiedad que obtiene y establece una variable de instancia, normalmente siempre usa la Propiedad desde fuera de esa clase para acceder a ella.

Mi pregunta es si también siempre debes hacerlo dentro de la clase. Siempre he usado la propiedad si hay una, incluso dentro de la clase, pero me gustaría escuchar algunos argumentos a favor y en contra sobre cuál es la más correcta y por qué.

¿O solo se trata de estándares de encoding utilizados en el proyecto?

Uno de los argumentos más sólidos para acceder a variables locales (scope de clase) a través de las propiedades es que agrega un nivel de abstracción en su clase. Si cambia alguna lógica sobre cómo se almacena ese campo, el rest del código no se verá afectado.

Por ejemplo, puede cambiar eso de una variable local a una propiedad de un objeto secundario, a una llamada a una base de datos, a una llamada a un servicio web, a una propiedad estática en una clase, etc. Al realizar el cambio, le proporciona un único punto de cambio, la propiedad, y no tiene que actualizar el rest de su clase, ya que todos usan la propiedad.

Además, el uso de la propiedad le permite aplicar reglas comerciales sobre el valor de la propiedad en lugar de tener que aplicar la misma regla en cada ubicación donde accederá directamente al campo. Nuevamente, encapsulación

Con la introducción de propiedades automáticas hay incluso menos razones para tener explícitamente una variable local, a menos que necesite aplicar reglas comerciales en el get / set

Depende de si desea aplicar cualquier lógica implementada en el conjunto de propiedades, por lo que realmente debe decidir caso por caso.

Cuando vaya directamente al campo privado, sabrá que el campo está ajustado exactamente a lo que dice.

Cuando revisa la propiedad, el valor se establece de acuerdo con la lógica del colocador, por lo que obtiene las reglas o validación comerciales que desee sobre los valores asignados a ese campo.

Es bastante difícil encontrar una regla sobre cuándo hacer las dos cosas es ‘correcto’, sobre la única que diría que sigo es que en la inicialización del constructor casi nunca usaría la propiedad.

Creo que es pura preferencia.

Sin embargo, me encuentro usando las propiedades mucho más en C # 3.0 con el soporte de auto-propiedad:

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

Generalmente, dependiendo de los estándares de encoding del proyecto, utilizo un “_” o “m” antes del nombre para mis atributos privados de clase. (Como abajo)

 private int mVariable; private int _Variable; 

Con aquellos en frente de la variable, reconozco de inmediato que estoy tratando con una variable interna para la clase. Luego, cuando se trata de depurar más tarde yo mismo o alguien más puede reconocer de inmediato que el código está tratando con una variable privada interna y hacer un ajuste. Entonces todo se reduce a la legibilidad para mí.

Sí, creo que debería usar propiedades internamente en sus clases siempre que sea posible. Las propiedades son más flexibles y le permite agregar lógica para validar su valor en un lugar central.

También puede retrasar la inicialización del campo a cada vez que se use la propiedad en lugar de forzarlo a hacerlo en el constructor (o en cualquier lugar donde se use el campo). Ejemplo:

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

Usar siempre las propiedades, estas son algunas de las razones

  1. Fácil de usar. En Visual Studio puede usar la “Pestaña Pestaña Prop”. Obtendrás el fragmento de propiedad
  2. Las propiedades son elementos de lenguaje a los que se accede como si fueran miembros de datos
  3. .Net framework classes lo usa, las clases de código de enlace de datos en las propiedades de soporte de .NET Framework,
  4. Las propiedades tienen todas las características de lenguaje de los métodos. Las propiedades pueden ser virtuales