Pregunta

¿Hay una beneficiarían a usar:

private var _someProp:String;

public function set someProp(value:String):void
{
    _someProp = value;
}
public function get someProp():String
{
    return _someProp;
}

A diferencia de simplemente usando:

public var someProp:String;

Me di cuenta el uso de captador / definidor puede ser útil cuando se necesita a un procesamiento adicional o necesitan ser notificado de cuando la propiedad se cambia de esta manera:

public function set someProp(value:String):void
{
    _someProp = value;
    _somePropChanged = true;
    doSomethingElse();
}

Pero si usted no necesita esto, entonces ¿hay alguna razón para utilizar captador / definidor sobre el uso de un solo public var?

Gracias !!

¿Fue útil?

Solución

En función de su idioma, se debe preferir captador / definidor por adelantado porque no se puede introducir más tarde (estoy mirando a ti, Java) si resulta que los necesita.

Otros consejos

Esto realmente depende un poco de la lengua / marco / conjunto de herramientas que está utilizando -

Sin embargo, a menudo hay beneficios al utilizar captadores y definidores relacionados para el control de versiones y la compatibilidad API. Esto puede ser una razón muy útil el uso de ellos, por su propia cuenta.

Esto realmente no se puede responder sin conocer el idioma. Captadores y definidores cuestan más en la mayoría de idiomas, sino que se compran flexibilidad a futuro. En algunos idiomas no se puede cambiar a un público a un captador / sin cambiar el código en las personas que llaman porque los cambios de sintaxis uso. Pero esto no es un problema con C #, que lo que escribo en su mayor parte.

captadores y definidores le permiten hacer la validación de parámetros. Ellos permiten retrasar la creación de objetos hasta la primera referencia. Tienen una gran cantidad de ventajas, y los utilizo cada vez que necesito una de esas ventajas desde el principio.

Pero yo uso captadores y definidores sólo cuando los necesito de inmediato, o cuando estoy bastante seguro de que voy a necesitar la flexibilidad. De lo contrario, los ven como hinchazón.

Como nota al margen, se puede empezar con una var pública y si es necesario convertir a un captador / definidor más adelante en el código .. dependiendo del idioma que está utilizando.

Si su propiedad es totalmente muda, y no tiene efectos secundarios sobre el resto de la clase. - entonces por supuesto acaba de exponer como un campo público

Es que en muchos casos sus propiedades tener efectos secundarios, por lo que necesita para controlar la forma en que se establecen y se accede a ellos.

Como un ejemplo trivial, ¿qué ocurre si la variable pública no está ajustado a algo en su constructor? ¿Estás bien con este ser devuelto como nulo? ¿O le gustaría establecer esta variable a algo más que devolver null? Este es un ejemplo sencillo en el que un captador costumbre es que vale la pena.

captadores y definidores también le dan más control sobre qué valores de la variable se puede ajustar a.

bool setAge(int age){
   bol retVal = true;

   if(age <= 0)
       retVal = false;

   return retVal;
}

Sin el organismo, el valor podría fijarse a cero y lo malo podría suceder.

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