nochmal sauber coden: Konstruktor
-
Hi
wie genau initialisiert man eigentlich ? wann und wo ? vor dem Konstruktor oder drinnen ? zu veranschaulichung:
so:
public class dummyKlasse{
private int int1 = 0;
private String string1 = null;public dummyKlasse(){
}
....
}
oder so:
public class dummyKlasse{
private int int1;
private String string1;public dummyKlasse(){
init();
}public void init(){
int1 = 0;
string1 = null;
}
....}
wo findet man allgemein was zu dem thema: sauber objektorientiert coden in java ? in änfängerbüchern steht da nicht wirklich was brauchbares und in fortgeschrittenen büchern steht gleich garnix dazu. thx for help.
pain
-
Naja, auf meinen Rat kannste wahrscheinlich eh verzichten, da ich nicht wirklich was drauf habe, aber ich nehme immer die erste Variante.
Habs bisher nur so gesehen und da stellte sich mir noch nicht die Frage, ob das sauber ist oder nicht
-
ich weiss, hab bisher genauso gedacht wie du. aber spätestens wenn du an dem punkt bist wo du mit mutiplen instanzen arbeitest überdenks du diese einstellung :-). ich vermute mittlerweile das man je nach anwendung teils vor dem konstruktor teils drinne initialisiert.trotzdem danke.
pain
-
Also mit Objektorientiert hat das hier weniger zu tun, eher mit gut strukturiertem Code.
Von der Logik her, sind beide Varianten in Ordnung.
Allerdings würde ich persönlich nicht unbedingt (kommt auf die komplexität des Objektes an) eine init Methode verwenden.Die erste Möglichkeit ist in sofern bedenklich, dass man diese Zeilen ja auch irgendwo in der Klasse schreiben kann. Und damit wäre die Klasse dann nicht mehr ganz so schön zu lesen, weil man in einem Codeabschnitt nicht weiss, was das für eine Variable ist und womit sie initialisiert wird.
Das läßt sich aber einfach beheben, wenn man alle Classen-Globalen Variablen als erstes schreibt (wie in deinem Beispiel) und nicht irgendwo.Also ich seh das so, dass das Geschmackssache ist.
Da sind andere Sachen wichtiger, wie Groß-/Kleinschreibung, eine konsequente Reihenfolge einer Klasse, wie z.B.:class X{ //----Instanzvariablen private int xy; //---- Konstruktoren public X(){ } //---- interne Methoden private calculateXY(){...} //---- öffentliche Methoden public .... }
Da gibt es auch andere Möglichkeiten, die Methoden zu sortieren/gruppieren.
Da sollte man schauen, was am sinnvollsten ist und das dann aber auch konsequent durchziehen.
-
Bei deinem Beispiel brauchst du nichts zu initialisieren.
-
das hauptsächliche problem war bei mir das bei neu instanzierung einer klasse
alle variablen so getzt werden wies oberhalb des konstruktors steht. in meinem fall sollte die initialisierung aber abhängig vom "konstruktortyp" bzw der art von instanz sein die ich verwende. und da wäre eine möglichkeit die initialisierung in den jeweiligen konstruktoren zu machen. da ich das so aber noch nirgends gesehn habe wollte ich mal nachfragen.pain