Delphi: registro constructor vs función de fábrica
Entonces, ¿cuál será la forma preferida de inicializar los registros?
Con una 'función de fábrica':
TMyRecord = record
valueX: integer;
valueY: integer;
end;
function MyRecord(const AValueX, AValueY: integer): TMyRecord;
begin
result.valueX := AValueX;
result.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := MyRecord(1, 2);
end;
o un constructor:
TMyRecord = record
valueX: integer;
valueY: integer;
constructor Create(const AValueX, AValueY: integer);
end;
constructor TMyRecord.Create(const AValueX, AValueY: integer);
begin
self.valueX := AValueX;
self.valueY := AValueY;
end;
var
myrec: TMyRecord;
begin
myrec := TMyRecord.Create(1, 2);
end;
Siento que el constructor se encapsula más, pero hace que sea fácil confundirse al leer el código. Hace que parezca una clase a la que le falta una llamada gratis. También es más que escribir ...
¿Por qué preferirías uno sobre el otro?