Mi curiosidad me tiene intrigado... pues yo no he notado diferencia entre el paso de valores de propiedades hacia las viarables privadas correspondientes. Verán.... cuando uno declara propiedades para una clase hce algo como:
Código Delphi
[-]
miclase = class
private
fpropiedad1: integer;
fpropiedad2: integer;
procedure SetPropiedad1(const Value: integer);
procedure SetPropiedad1(const Value: integer);
public
property Propiedad1: integer read fpropiedad1 write SetPropiedad1;
property Propiedad1: integer read fpropiedad1 write SetPropiedad1;
Lo normal en un procedimiento Setxxxx es:
Código Delphi
[-]if Value <> FPropiedad1
then FPropiedad1 := Value;
Hasta allí todo bien.
Ahora supongamos que al setear el valor de la propiedad2, hay que cambiar el de propiedad1. Y es aquí donde tengo una curiosidad: ¿Es lo mismo hacer esto:
Código Delphi
[-]if Value <> FPropiedad2
then begin
FPropiedad2 := Value;
FPropiedad1 := FPropiedad2 div 2; end;
que esto otro?:
Código Delphi
[-]if Value <> FPropiedad2
then begin
FPropiedad2 := Value;
Propiedad1 := FPropiedad2 div 2; end;
¿Se vé la diferencia? El primero se cambia en forma directa hacia la variable privada. El segundo hace que dispare el procedimiento SetPropiedad1.
No hay error en el código... ¿Pero cual método es mejor? ¿Habrá algún efecto colateral el que pase (o no pase) el valor en forma directa hacia la variable privada? Por poner un ejemplo extremo: supongamos que hay 20 propiedades y que el cambio de una de ellas haga que se propage una serie de cambios en el resto... ¿se notará algún efecto?
También estuve pensando de que internamente el compilador traduce a cada Propiedad := Valor por el SetPropiedad. Pero si uno omite la declaración de SetPropiedad.... ¿ahora.... en que quedamos?
Bueno, espero que se me entienda... es una curiosidad que me viene picando desde hace tiempo.
Saludos,