2015-04-14 19 views
10

Modern Delphi, kurucuların kayıtlara izin verir."Kalıtsal" satırı kayıt yapıcılara eklemem gerekir mi?

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

Sorum şu - Benim kayıtları kurucularınızdaki inherited satır eklemem gerekir mi: Aşağıdaki kod var? Ve neden?

cevap

10

Hayır, bunu yapmanıza gerek yoktur, çünkü kayıtlar kalıtımı desteklemez ve bu nedenle inherited bu bağlamda no-op'dir.

FWIW Kayıt yapıcıları bir anti desen olarak kabul ediyorum. Arama alanındaki okuyucu için değer tipi ve referans tipi arasında ayrım yapmasını zorlaştırır. Kişisel olarak bu amaç için yeni bir değer döndüren New isimli statik sınıf işlevlerini kullanıyorum. Farklı bir adın daha iyi olup olmadığını tartışabilirsiniz, ancak çok da önemli değil, Create.

+0

Sadece düşündüğüm gibi. Açıklama için teşekkürler! – Kromster

+0

Adlandırma kuralı hakkında iyi bir nokta, mükemmel bir anlam ifade eder. – Kromster

İlgili konular