Guter Stil von Beginn an (this oder expliziete Parameter)

Also, die Variante A habe ich auch noch nie gesehen.
Die Variante B ist die, die ich kenne und verwende.
zerix hat gesagt.:
Bei "Globalen" Variablen kann man dann this davor schreiben, muss man aber nicht, oder irre ich mich da
Du musst this davor schreiben, wenn in der Methode (oder als Methodenparameter) eine Variable mit demselben Namen definiert ist. Kommt diese Variable nicht in der Methode vor, kannst Du this davor schreiben, musst es aber nicht.
Ich verwende auch in dem zweiten Fall immer this, da dann im Code auch bei längeren Methoden klar zu erkennen ist, auf was ich zugreife. Ob das jedoch in irgendeiner Codeconvention empfohlen oder als schlechter Stil angesehen wird, weiß ich nicht.
Bei Eclipse kann man sich das Fehlen von this als Warning oder Error einstellen. Das lässt vermuten, dass es verwendet werden sollte.

Bei Java sind es trotzdem Instanzvariablen ;)

Gruß hpvw
 
Hallo!

Sie haben außerhalb und innerhalb der Funktionsdefinition Gültigkeit.
... in Java spricht man nicht von Funktionen sondern von Methoden. Weiterhin ist diese Definition schwammig... wie gesagt ... was du meinst sind Instanz Variablen... diese sind innerhalb einer Instanz gültig... nicht jedoch unabhänig von einer konkreten Instanz. Im Gegensatz zu public static Attributen...

ich sag dazu nichts mehr.

Gruß Tom
 
Thomas Darimont hat gesagt.:
Hallo!
@Snape

Jeder hat so seinen eigenen Stil... ich und meine Kollegen teilen die Meinung, dass es besserer Stil ist Konstruktorparameter so zu bennennen wie die entsprechenden Membervariablen und diese dann mit this bei der Zuweisung eindeutig zu qualifizieren...

Über Geschmack lässt sich bekanntlich nicht streiten. ;)

Außerdem ist deine Argumentation etwas schwach... welche Variante wäre denn hier "schicker" ?
Code:
public class BusinessObject {
	
	private boolean isNew;
	private Object someData;
....
	
	1)
	public BusinessObject(boolean isNewNew, Object someDataNew){
		isNew = isNewNew;
		someData = someDataNew;
	}
	
	2)
	public BusinessObject(boolean isNew, Object someData){
		this.isNew = isNew;
		this.someData = someData;
	}
....
}
1 oder 2? ;-)
Ich denke mit Variante 2) hat man eine konsequentere und eine einheitlichere Konvention.... und das ist wichtig bei großen Entwicklungsprojekten. Ich persönlich finde große Frameworks (wie etwa das Springframework) in denen dies konsequent Umgesetzt worden ist leichter zu erlernen und anzuwenden.

Gruß Tom

Du lernst ja auch durch Bücher alleine, das können auch nicht alle - mich eingeschlossen. ;)
Wie gesagt, Geschmacksache. isNewNew ist natürlich gaga...
Variante 1 sinnvoll geändert, und ich bin Dein Fan. ;)
 
Danke für die konstruktiven Beiträge, werde mich für die kurze Variante "this" Variante entscheiden.

Noch 2 Fragen:

@hpvw:
Wo kann man das Warning in Eclipse einstellen? Wäre angenehm um das ganze zu vereinheitlichen und unterstützt mich sicher beim Lernen

@alle:
Noch eine Frage zu den Methoden:
Es darf ja syntaktisch mehrere Methoden mit dem selben Namen geben, da der Compiler anhand der Parameter unterscheidet. Bezieht sich diese Unterscheidung nur auf die Anzahl oder auch auf die Typen bzw. sogar auf die Variablendeklaration?

Ist zu deutsch folgendes erlaubt!?:

Code:
Methode 1: public void getStudentData (int x) {}
Methode 2: public void getStudentData (int y) {}
Methode 3: public void getStudentData (int x, int y) {}
Methode 3: public void getStudentData (Object a) {}

Oder würde der sich der Compiler hier irgendwo stoßen (vor allem bei 1 und 2)?

LG
Mike
 
Hallo!

Ist zu deutsch folgendes erlaubt!?:
Nicht komplett.... man nennt das ganze übrigens Methoden Überladung.

public abstract void getStudentData (int x);
public abstract void getStudentData (int y); <-- Nicht erlaubt, da schon eine Methode mit dem gleichen Namen und der selben Parametersignatur existiert...
public abstract void getStudentData (int x, int y);
public abstract void getStudentData (Object a);

Alle anderen Methoden sind gültig, da man sie durch Ihre Methodensignaturen eindeutig identifizieren kann, deine Namensgebung solltest du allerdings nochmal überarbeiten ;-).

Gruß Tom
 
Jepp, bei 1 und 2

Die Variable muss entweder von einem anderen Typ sein oder es müssen entweder mehr Variablen sein :)
 
Alles klar...

@Tom:
Muss mich erst an die neuen Begriflichkeiten gewöhnen (Überladung, Überlagerung :)
Wißt ihr vielleicht auch wegen den Eclipse Einstellungen (Warning bei this) Bescheid?
 
Eclipse 3:
Window -> Preferences
Java -> Compiler -> Style
"Unqualified access to instance field" -> Warning

In der 2er war Warning glaube ich sogar Standard.
 

Anhänge

  • eclipse.gif
    eclipse.gif
    14,2 KB · Aufrufe: 37
Danke.. arbeite mit 3.0.2... Ist also genau dort, wo Du beschrieben hast ;o))
Übrigens Danke an alle für die massigen Infos.. hat mich einiges weitergebracht :)
 
Zurück