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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta