Mehrere Objekte erstellen und wegräumen

Mehrere Objekte erstellen und wegräumen

Als Delphi-Programmierer müssen wir leider immer noch ohne Garbage Collection auskommen und somit unsere Objekte selber wieder wegräumen. Häufig verwenden wir dazu folgendes Muster:

foo := TFoo.Create;
try
  // foo verwenden
finally
  foo.Free;
end;

So weit so gut. Was machen wir nun aber, wenn wir mehr als ein Objekt verwenden müssen? Olaf Monien hat dazu einen hervorragenden Artikel geschrieben und empfiehlt folgendes Muster:

foo := nil;
bar := nil;
try
  foo := TFoo.Create;
  bar := TBar.Create;
  // foo und bar verwenden
finally
  bar.Free;
  foo.Free;
end;

Mir gefällt dieses Muster sehr gut, weil es einerseits übersichtlich und andererseits vor allem aber auch technisch korrekt ist. Dieses Muster funktioniert zum Beispiel auch dann, wenn im Konstruktor von TFoo oder TBar eine Exception geworfen wird.

Erläuterungen zu diesem Muster und auch einige Beispiele, wie man es eben nicht machen soll, finden sich in Olaf’s Artikel Creating mulitple objects using try-finally.

Schreibe einen Kommentar