![]() |
Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
In einem Konstruktor einer Klasse verarbeite ich eine Stringvariable. Wenn der Inhalt in irgendeiner Art und Weise korrupt ist, wird im Constructor nichts weiter verarbeitet.
Das Problem ist, dass ich diese Klasseninstanz beim Erzeugen in eine generische TObjectList<> packe:
Delphi-Quellcode:
Wenn im Konstruktor nun wegen korrupter Daten keine weiteren Daten vorbereitet werden, soll ein Schlussstrich gezogen werden und diese Instanz nicht in die generische TObjectList gepackt werden.
GenerischeTObjectList.Add(Klasse.Create(Parameter));
Wie bewerkstellige ich das? |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Im constructor eine exception raisen und außen dann entsprechend behandeln.
Oder das ganze Design überarbeiten. Solche Dinge gehören eigentlich nicht in einen Konstruktor. |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Es ist nur ein String der dort verarbeitet wird. Wird so schlimm nicht sein ;)
Ansonsten hätte ich diese Verarbeitung bzw. einen Prozeduraufruf doppelt, da ich zwei Stellen habe wo ich den Constructor aufrufe. Ist das hier ausreichend (Code ist nur zum Verständnis)
Delphi-Quellcode:
try
InstanceX := ClassX.Create(); // raise exception im Constructor mit Nachricht für mein Log-File except end; if Assigned(InstanceX) then GenerischeListe.Add(InstanceX); |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Kein Constructor, sondern eine Class-Function, die auch gern CreateIrgendwas heißen darf.
Da drin kannst du dann machen was du willst. |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
|
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Zitat:
|
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Zitat:
bzw. ich mache das so öfters. |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Zitat:
Da ich nicht der "niemals/immer" Typ bin, bin ich persönlich keineswegs gegen alles außer Zuweisungen im Konstruktor. Wenn das, was dort geschieht zur Objektinitialisierung dient - und ein TFileStream ist ja nunmal dafür da (gut, man könnte jetzt argumentieren, dass das eigentliche Öffnen in einer Open Methode geschehen sollte), dann lass ich das durchaus zu. Davon abgesehen ist die RTL und VCL aber keineswegs das Maß der Dinge, wenn es um guten Stil oder Befolgung von Patterns geht ;) |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Zitat:
Das ist eine Klasse deren Konstruktor entweder einen Thread A oder Thread B erzeugt. Thread A hat zudem ein Notify-Event als Parameter. Und dann kommt noch hinzu, dass meine generische Liste Instanzen dieser Klasse aufnimmt. Einfach hier und da was ändern is nich. |
AW: Constructor Rückgabewert nil-en statt Instanz zurückzugeben?
Zitat:
Eventuell auch in diesem Zusammenhang für den Threadersteller interessant: Dependency Injections von Nick Hodges ( ![]() (Stevie brauchts hws nicht mehr lesen :P) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz