2015-04-14 6 views
10

Moderne Delphi ermöglicht Konstruktoren für Datensätze. Ich habe den folgenden Code:Muss ich in Datensatzkonstruktoren eine "geerbte" Zeile hinzufügen?

{ 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; 

Meine Frage ist - ich inherited Linie in meinen Aufzeichnungen Konstrukteuren hinzufügen müssen? Und warum?

Antwort

10

Nein, Sie müssen dies nicht tun, da Datensätze die Vererbung nicht unterstützen. Daher ist inherited in diesem Kontext kein No-Op.

FWIW Ich betrachte Rekordhersteller als Antimuster. Es erschwert dem Leser an der Aufrufstelle, zwischen Werttyp und Referenztyp zu unterscheiden. Ich persönlich benutze statische Klassenfunktionen mit dem Namen New, die einen neuen Wert für diesen Zweck zurückgeben. Sie können darüber streiten, ob ein anderer Name besser ist, aber es spielt keine Rolle, solange es nicht Create ist.

+0

So wie ich dachte. Danke für die Klarstellung! – Kromster

+0

Guter Punkt über Namenskonvention, macht Sinn. – Kromster

Verwandte Themen