Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
@PCShadow
Ich wollte eigentlich schon exceptions einbauen, aber ich habe irgendwo gelesen, dass es nicht so gut sein soll exceptions aus einer dll zu werden und diese dann in einer anderen exe abzufangen, stimmt das?
Sonst würde ich einfach überall, wo ich etwas ins log schreibe noch ne exception werden.
Du könntest auch den log eintrag in den konstruktor deiner jeweiligen exceptions packen, und dann nur die exception werfen.
Was ich gleich im Beispiel sehe: Komm weg von "Create" und "Destroy" Funktionen. Dafür gibt es Konstruktoren und Destruktoren. Genau für das sind die nämlich da!
Das stimmt zwar, aber nicht generell. Ein Objekt erst spät vollständig zu initialisieren ist ja nicht ungewöhnlich (Subsysteme hoch/runter fahren etc). Grad bei dem Beispiel mit dem Fenster finde ich die Create-Methode recht gut, weil ich das Erzeugen des Fensters ggf verzögern möchte.
Das widerspricht natürlich nicht dem vorhaben, dass man gewisse Systeme erst bei Bedarf nachlädt, aber das ist schon ein Unterschied, weil diese Systeme dann für das Objekt selbst (anscheinend) nicht essentiell sind.
Von einer Destroy Funktion würde ich absehen. Wenn, dann kann man eine "clean" Funktion oder so einabauen, die bei Bedarf z.B gecachte Sachen freigibt (wie ich es z.B bei Firefox wünschen würde..), aber ein Objekt ist erst zerstört, wenn der Destruktor aufgerufen wurde.
Es ist grundsätzlich falsch (aus OO Sicht) öffentliche "create", "init" oder "destroy" Funktionen zu haben, denn die beschreiben genau die Aufgaben von Konstruktoren/Destruktoren.
Über die Begrifflichkeit "Destroy" kann man sich natürlich streiten. Die Methode muss ja nicht aussagen das Objekt zu zerstören, sondern nur diverse Resourcen über die das Objekt verfügt.
Nein, das ist überhaupt nicht grundsätzlich falsch... Wie gesagt geht es nicht um das Erzeugen des Objekts sondern um spätes (nach-)initialisieren von Teilfunktionalität. Das ist aus OO Sicht vollkommen korrekt.
Das sagte ich auch bereits, dass ich dem zustimme, aber eine Funktion, die "create" ist schlichtweg falsch. Entweder sie macht das, was man erwartet und initialisiert das Objekt (was wir uns ja einig sind nicht gut ist) oder aber sie macht etwas anderes und dann ist sie völlig falsch benannt.
Werbeanzeige