5.
Nicht (unbedingt) threadsichere Methoden: Ich habe gerade einen Konstruktor geschrieben, der die Format-Methode nutzt. Ich weiß ja pauschal nicht, ob diese Methode threadsafe ist oder nicht. Daher hätte ich dann diesen Code ...
Delphi-Quellcode:
constructor TMyObject.Create(const AFormat: string; const Args: array of const);
begin
inherited Create();
FMessage := Format(AFormat, Args);
end;
... wie folgt umgeschrieben. Dieses Problem ist ja auch auf jede andere beliebige Methode "anwendbar" und nich auf Konstruktoren beschärnkt.
Delphi-Quellcode:
constructor TMyObject.Create(const AFormat: string; const Args: array of const);
begin
inherited Create(); // Erzeugt eine CriticalSection, da von
// entsprechender Basisklasse abgeleitet
Lock();
try
FMessage := Format(AFormat, Args);
finally
Unlock();
end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)