Delphi: função de construtor de registro vs fábrica

Então, qual será a maneira preferida de inicializar registros?

Com uma 'função 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;

ou um construtor:

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;

Eu sinto que as coisas do construtor são mais encapsuladas, mas isso torna mais fácil ficar confuso ao ler o código. Isso faz com que pareça uma classe que não tem uma ligação para liberar. Também é mais para digitar ...

Por que você prefere um sobre o outro?

questionAnswers(4)

yourAnswerToTheQuestion