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?