Zitat von
alzaimar:
Wenn mein Konstruktor knallen könnte, überlege ich mir sehr genau, ob ich eine Konsistenzprüfung dort einbaue. Ich bevorzuge liebe eine 'Prepare'-Methode, die die Eigenschaften prüft, oder lass das von der Methode ausführen, die konsistente Eigenschaften voraussetzt. Um Eigenschaften konsistent zu setzen, würde ich sie logisch zusammenfassen: Entweder als Klasse oder Record. Wenn das noch Overkill ist, dann schreibe ich mir eine 'Set'-Methode à la 'SetBounds'.
Ein TFileStream z.B. hätte man auch analog zur 'AssignFile/ReSet'-Metapher implementieren können: Der Konstruktor entspräche dann dem 'AssignFile': Nur müsste man dann eine Zeile mehr schreiben.
Solange man sich wirklich Gedanken macht über den Zustand eines Objektes, sollte es kein Richtig & Falsch geben.
Dein Weg wäre sicherlich genauso OK, wie ein anderer. Ich selbst mag es auch lieber parameterlose Konstruktoren zu haben und solche Dinge über Instanzmethoden zu lösen. Nur dadurch kann man überhaupt erst Abtraktionen und Interfaces benutzen.