2012-04-28 57 views
15

¿Es una buena práctica usar el campo privado, o la propiedad, al escribir código en la clase que los contiene?Dentro de la clase contenedora, ¿usar propiedad o campo?

Por ejemplo, si tengo este par de campo/propiedad, las clases fuera de esta clase debe usar la propiedad. ¿Qué pasa con el código dentro de la clase? ¿Debería usar el campo privado, o debería pasar también por la propiedad?

private string _foo; 

protected string Foo 
{ 
    get { return this._foo; } 
} 

private void SomeMethod() 
{ 
    string dummyVariable = "snuh" + this._foo; // So, this... 
    string dummyVariable = "snuh" + this.Foo; // ... or this? 
} 

Una ventaja de usar la propiedad aquí, es si hay alguna lógica en el captador, que seguirá recibiendo ejecutado. Tengo curiosidad por saber si hay una política de mejores prácticas para seguir aquí.

+1

Mi ** opinión ** es que no importa (dado que su propiedad no hace nada especial) siempre y cuando sea consistente, pero tengo curiosidad por saber qué dicen los demás. – Tung

+0

posible duplicado de [Mejores prácticas sobre el uso local de Propiedad de campo privado x] (http://stackoverflow.com/questions/833047/best-practice-on-local-use-of-private-field-x-property) – Matt

+0

Una nota de nomenclatura: está usando incorrectamente el término "variable". En este caso, te refieres a "campo". –

Respuesta

8

Al utilizar Auto-Implemented properties, no tiene otra opción: debe utilizar la propiedad, ya que no tiene acceso al campo generado.

Si su propiedad no es simple y realiza algún trabajo adicional (validación, activación de eventos, etc.), debe llamar a la propiedad para centralizar el acceso y la lógica.

Si tiene cualquier otra propiedad (lo que significa una simple propiedad sin una lógica y un campo de respaldo) Me gustaría preguntar por qué no son uno de los anteriores ...

Con el ejemplo que ha de dar, se hace poca diferencia: es más importante ser coherente con la forma de usarlos y realmente se reduce a la estética personal y al estilo de codificación.

+1

Me vienen a la mente dos casos de uso de propiedades simples, no automáticas: propiedades con valores iniciales no predeterminados (C#) o propiedades con un sistema privado (VB.NET). – Heinzi

+0

@Heinzi - Es cierto, y la parte de mi respuesta con respecto al ejemplo se aplicaría a esos también ... – Oded

Cuestiones relacionadas