¿Las variables constructoras deben pasar directamente a los campos privados o propiedades?

StackOverflow https://stackoverflow.com/questions/131517

  •  02-07-2019
  •  | 
  •  

Pregunta

Ahora esto es .NET pero estoy seguro de que el principal debe aplicarse a todos los lenguajes OOP, para simplificar, tomo .NET como ejemplo:

R # por lo general creador del creador y pasa la variable entrante al campo privado, que para mi tiende a pasarlo a la Propiedad.

¿Alguna opinión sobre cómo diferentes y cuál es la mejor práctica para eso?

¿Fue útil?

Solución

El uso de propiedades está bien siempre y cuando no sean virtuales / sobrescritos. Las propiedades son esencialmente métodos, y no debe llamar a métodos virtuales desde el constructor porque es posible que el tipo apropiado aún no esté construido. Microsoft ha incluido su propio conjunto de directrices , simplemente desplácese hacia abajo hasta la en la parte inferior para ver la guía relevante y el fragmento de código que ilustra el problema (lo ilustran utilizando métodos, pero como mencioné. Las propiedades de .NET son esencialmente métodos especiales).

Otros consejos

Pasar el parámetro a través del establecedor de propiedades le permite mantener cualquier código de validación en un solo lugar.

Recomendaría enviarlo a la propiedad, en lugar de hacerlo directamente al campo privado, aunque su implementación real dictaría las condiciones exactas. Por ejemplo, a veces hay eventos que se activan cuando usa la Propiedad, y no quiere activar esos eventos durante el constructor. O tal vez quiera eludir la lógica de propiedad por alguna otra razón.

Ten cuidado al utilizar el Setter de propiedades. Es posible que tenga un código en el setter que puede causar efectos secundarios inesperados.

Manipulo campos dentro del constructor. Los campos realmente representan el estado inherente de su objeto, y el trabajo del constructor es inicializar este estado interno. Las propiedades están aquí solo para propósitos de encapsulación, y son parte de la interfaz pública para el estado del objeto.

La lógica de transformación que aplique a los argumentos del constructor o a los valores de entrada de las propiedades antes de establecer el estado interno del objeto podría ser muy diferente. De todos modos, si es el caso, solía usar un método de transformación explícito llamado desde el establecedor de propiedades y desde el constructor, en lugar de encadenar directamente el constructor en el definidor de propiedades.

Si no hay ninguna lógica, no puedo ver por qué le gustaría usar el establecedor de propiedades dentro del constructor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top