Hallo liebes Forum,
ich arbeite gerade an meinem ersten etwas größeren Projekt und mir geht es dabei darum, es möglichst sauber zu implementieren. Dabei bin ich auf folgendes Problem gestoßen, bei dem mir nicht recht klar ist, ob es da ein sinnvolles Pattern gibt. Es geht eigentlich darum, dass jedes meiner Objekte einen Identifier bekommt, der eindeutig sein sollte. Daher dachte ich einfach daran, in der Klasse eine statische HashSet<String> hsIden zu definieren, der ich im Konstruktor immer den Identifier übergebe.
Ist im HashSet der Identifier noch nicht enthalten, wird das neue Objekt ganz normal initialisiert, ansonsten wird nichts gemacht. Das klappt soweit auch ganz gut. Jedoch ist dabei aus meiner Sicht das Problem, dass ja auch ein Objekt kreiert wird. Es wird zwar nicht initialisiert mit Werten und es gibt auch kein Problem mit den Identifiers, aber nichtsdestotrotz ist das Objekt vorhanden.
Von daher meine Frage: Was ist hierbei sauberer Programmierstil? Nimmt man das einfach in Kauf? Wenn ja, bedeutet das dann, dass man nun überall checken muss, ob das Objekt initialisiert worden ist? Bspw. so:
Ich dachte auch schon daran, eine Factory-Methode zu generieren, aber die gibt ja auch ein Objekt zurück und löst daher auch das Problem nicht.
Nochmals: das ist jetzt eher eine theoretische Frage, ob das ganze zum Problem wird. Vielleicht ist es praktisch überhaupt kein Problem, da der GC sich dem Problem annimmt oder man im Code ja eh checken muss, ob das Objekt initialisiert wird (soweit ist mein Programm noch nicht ;-) Trotzdem fände ich es super, wenn ihr mal eure Meinung dazu äußern könntet. Vielleicht gibt es hierzu ja ein einfaches Programmierkonzept. Habe leider im Netz nichts dazu gefunden.
Vielen Dank schon einmal und Grüße
Christoph
ich arbeite gerade an meinem ersten etwas größeren Projekt und mir geht es dabei darum, es möglichst sauber zu implementieren. Dabei bin ich auf folgendes Problem gestoßen, bei dem mir nicht recht klar ist, ob es da ein sinnvolles Pattern gibt. Es geht eigentlich darum, dass jedes meiner Objekte einen Identifier bekommt, der eindeutig sein sollte. Daher dachte ich einfach daran, in der Klasse eine statische HashSet<String> hsIden zu definieren, der ich im Konstruktor immer den Identifier übergebe.
Java:
if(hsIden.add(currentIdentifier)){
//Initialisiere das neue Objekt
this.variable1 = xxx;
this.variable2 = yyy;
} else {
//Mache nichts
}
Ist im HashSet der Identifier noch nicht enthalten, wird das neue Objekt ganz normal initialisiert, ansonsten wird nichts gemacht. Das klappt soweit auch ganz gut. Jedoch ist dabei aus meiner Sicht das Problem, dass ja auch ein Objekt kreiert wird. Es wird zwar nicht initialisiert mit Werten und es gibt auch kein Problem mit den Identifiers, aber nichtsdestotrotz ist das Objekt vorhanden.
Von daher meine Frage: Was ist hierbei sauberer Programmierstil? Nimmt man das einfach in Kauf? Wenn ja, bedeutet das dann, dass man nun überall checken muss, ob das Objekt initialisiert worden ist? Bspw. so:
Java:
Object o2 = new Object(currentIdentifier, xxx, yyy);
///...
(if !o2.equals(null)) {
}
Ich dachte auch schon daran, eine Factory-Methode zu generieren, aber die gibt ja auch ein Objekt zurück und löst daher auch das Problem nicht.
Nochmals: das ist jetzt eher eine theoretische Frage, ob das ganze zum Problem wird. Vielleicht ist es praktisch überhaupt kein Problem, da der GC sich dem Problem annimmt oder man im Code ja eh checken muss, ob das Objekt initialisiert wird (soweit ist mein Programm noch nicht ;-) Trotzdem fände ich es super, wenn ihr mal eure Meinung dazu äußern könntet. Vielleicht gibt es hierzu ja ein einfaches Programmierkonzept. Habe leider im Netz nichts dazu gefunden.
Vielen Dank schon einmal und Grüße
Christoph