Pregunta

Public Class FooBar
{
    private int _foo;

    public int Foo { 
        get { return _foo; }
        set { _foo = value; }
    }

    public void DoStuff()
    {
        _foo++; // Do this?
        Foo++; // Or this?
    }
}

¿Existe una práctica más aceptada para acceder a campos o propiedades (si existe) en una clase? Siempre he tenido la costumbre de acceder al campo, pero como he estado haciendo WPF que tiene una gran cantidad de INotifyPropertyChanged, he tenido que acceder a la Propiedad para cambiar la notificación. Así que ahora tengo una combinación de accesos de campo y propiedad a lo largo de mis clases y aunque desde el punto de vista del compilador no importa, estilísticamente y legibilidad, se siente ... incómodo.

¿Fue útil?

Solución

Ciertamente, hay casos en los que acceder a la propiedad no tiene sentido (por ejemplo, si estaba implementando la propiedad en sí). Dejando a un lado esos casos, iría con el estilo de propiedad por defecto (a menos que tenga una razón específica para no hacerlo). Acceder al campo a través de la propiedad dirigirá todos los cambios en una sola ruta de código, lo que facilitará el cambio de implementación y depuración y puede ser menos propenso a errores.

Otros consejos

Mucho de esto se reduce al estilo personal. No hay una respuesta 100% correcta o incorrecta aquí.

Mi preferencia es pasar por la propiedad cada vez por un par de razones

  • Facilita la depuración ya que puede interrumpir el acceso a la propiedad y ver todo el valor de get / set. No es posible con un campo
  • Consistencia: en algunos casos, como las propiedades automáticas, no es posible ir directamente al campo de respaldo. Pasar por la propiedad cada vez muestra el mismo código que accede al mismo valor.
  • Rendimiento: las propiedades simples son probables alineadas por el JIT, por lo que el problema de rendimiento suele ser un punto de silencio.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top