Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Wo gebt ihr Objekte frei?

  Alt 11. Dez 2007, 17:15
Als Faustformel wird meistens vermittelt: Das Objekt sollte auf der gleichen Ebene wieder freigegeben werden, wie es erzeugt wurde. Somit ist die erste Lösung nicht nutzbar und auch grundsätzlich schlechter Stil. Wenn in einem Projekt viele sowas machen, dann sieht im Endeffekt keiner mehr durch um sagen zu können: MethodeX gibt mir nur eine Referenz auf ein internes Objekt zurück, also nicht freigeben oder die Methode gibt ein frisch für die Rückgabe angelegtes Objekt zurück. Es macht deutlich mehr Aufwand und Pflege.

Meine XMLLib hatte solche Methoden z.T. wie dein erstes Beispiel implementiert, aber das war sehr schlecht. Die meisten Nutzer haben sich keine Platte gemacht die Rückgabewerte freizugeben. Zum Teil wurde die nichtmal in eine Variable geworfen sondern direkt temporär benutzt und da ist dann schnell mal die Applikation beim Speicher fressen. Die Anwender haben die Lib nicht geschrieben und wissen nicht um das Handling. Es gibt zwar eine Dokumentation, aber wer liest die, wenn alles läuft? Vor allem kommt keiner auf die Idee etwas frei zu geben, was ein anderer angelegt hat. Nun habe ich es durchgedrückt und der Aufrufer hat die Listen zu erzeugen. Damit ist es dem Nutzer definitiv bewußt, dass er eine Instanz angelegt hat und dadurch ist es ihm auch bewußt diese wieder freizugeben. Und wann das sein wird, weiß der Anwender am besten. Damit ist aber auch immer definitiv klar, wer was zu machen hat.
  Mit Zitat antworten Zitat