Im Normalfall Interface-Parameter besser als const deklarieren.
Sonst erfolgt unnötige Referenzzählung (wie auch bei string).
Delphi-Quellcode:
type
IVisitor = interface
['{59A6BE7C-6BD7-4746-AA37-F42DCB6D8D01}']
procedure Visit(const Instance: IInterface);
procedure NotSupported(const Name: string);
end;
IVisited = interface
['{6C55ECC2-E1AB-43DD-96EC-755FF5C12400}']
procedure Accept(const Visitor: IVisitor);
end;
Ist nur meine persönliche Meinung, aber ich würde genau das nicht machen. Die "überflüssige" Referenzzählung ist ein Inkrement und ein Dekrement eines internen Zählers und fällt überhaupt nicht ins Gewicht. Die Deklaration als const allerding übergibt einen Pointer auf ein Interface und bei jedem Zugriff auf das Interface erfolgt eine zusätzliche Dereferenzierung des Pointers (und übrigens auch noch eine Referenzzählung). Also lediglich in dem Fall, wo das Interface innerhalb der Methode so gut wie nicht verwendet wird, mag die const Variante marginal schneller sein - in allen anderen Fällen ist sie weniger performant.