2015-04-14 21 views
10

Modern Delphi consente i costruttori per i record. Ho il seguente codice:Devo aggiungere la riga "ereditata" nei costruttori di record?

{ TKMRect } 
constructor TKMRect.Create(aPoint: TKMPoint); 
begin 
    inherited; // <<- Do I need to add this line ? 

    Left := aPoint.X; 
    Top := aPoint.Y; 
    Right := aPoint.X; 
    Bottom := aPoint.Y; 
end; 

La mia domanda è - devo aggiungere inherited linea nei miei costruttori record? E perché?

risposta

10

No, non è necessario farlo perché i record non supportano l'ereditarietà e quindi inherited è un no-op in questo contesto.

FWIW Considero i costruttori di record come un pattern anti. Rende difficile per il lettore del sito di chiamata distinguere tra tipo di valore e tipo di riferimento. Personalmente utilizzo le funzioni di classe statiche denominate New che restituiscono un nuovo valore per questo scopo. Puoi discutere se un nome diverso è migliore, ma non importa tanto è che non è Create.

+0

Proprio come pensavo. Grazie per il chiarimento! – Kromster

+0

Un buon punto sulla convenzione di denominazione, ha perfettamente senso. – Kromster

Problemi correlati