Code Conventions?
-
Gregor schrieb:
stevg schrieb:
was haben eigendlich alle gegen 'this' ich finde das ist am übersichtlichsten.
Das Problem beim "this" ist, dass man es vergessen kann, was zu einem Fehler führt, der erst zur Laufzeit auffällt.
Wobei ein vernuenftiger Compiler bei
foo = foo;
doch warnen sollte, oder?
-
SG1 schrieb:
Gregor schrieb:
stevg schrieb:
was haben eigendlich alle gegen 'this' ich finde das ist am übersichtlichsten.
Das Problem beim "this" ist, dass man es vergessen kann, was zu einem Fehler führt, der erst zur Laufzeit auffällt.
Wobei ein vernuenftiger Compiler bei
foo = foo;
doch warnen sollte, oder?
mag sein, es gibt aber auch fälle in denen du mit foo etwas rechnest:
x = Math.pow(this.foo, a); x = Math.pow(foo, a); // this vergessen
und hier zu warnen macht wenig sinn.
und ich denke diese situation ist eine häufigere fehlerursache als "foo = foo;"
-
stevg schrieb:
x = Math.pow(this.foo, a); x = Math.pow(foo, a); // this vergessen
und hier zu warnen macht wenig sinn.
und ich denke diese situation ist eine häufigere fehlerursache als "foo = foo;"
Es ging um Getter- und Setter-Methoden, oder? Bei allen anderen stellt sich das Problem der gleichen Variablen doch gar nicht.
-
In der Tat, in welcher Methode übergibt man schon ein Argument, dass wie ein Datenelement heisst?
-
Durch die Eindeutigkeit der get- bzw. set-Methoden empfehle ich stets den selben Variablennamen in der Methodensignatur zu verwenden - nämlich newValue bzw newObject. Dies wird auch von den meisten fireXYZEvent()-Methoden im JDK gemacht und hilft dabei zuverlässig den Problemen der Nomenklatur aus dem Weg zu gehen. Die Benutzung von this halte ich für Geschmackssache - es ist möglich, also warum auch nicht nutzen? Viel wichtiger halte ich es, einen Standard anzunehmen und den dann auch konsequent durchzuziehen.
Beispiel:
public class MyHyperClass { int hyperLimit; Object dataObject = null; ... public MyHyperClass() { ... } public int getHyperLimit() { return hyperLimit; } public void setHyperLimit(int newValue) { hyperLimit = newValue; } public Object getDataObject() { return dataObject; } public void setDataObject(Object newObject) { if (newObject != null) dataObject = newObject; } ... }
-
Konstruktoren und Setter
-
Probleme mit der Artikulation? "Was will uns diese Werbesendung sagen?"
-
Guck auf die Zeiten, zu denen wir gepostet haben.
-
Bashar schrieb:
Konstruktoren und Setter
Da haben wir ja schon festgestellt, das die Verwendung von this nicht verwirrend sein sollte.
-
CengizS schrieb:
Durch die Eindeutigkeit der get- bzw. set-Methoden empfehle ich stets den selben Variablennamen in der Methodensignatur zu verwenden - nämlich newValue bzw newObject.
<edit> die glühbirne sollte einsicht demonstrieren
-
Entweder stehe ich auf dem Schlauch oder ihr. Was willst Du mir nun damit sagen?
-
Dass meine Antwort nicht an dich gerichtet war.
-
wer spricht ihr mit wem ?
-
Ich sehe schon ... lassen wirs Ich hatte eigentlich stevg gemeint aber nun ist es auch egal ...
-
Achso
-
Edit: Omg, habe übersehen das es schon eine 2. Seite
Letztendlich hat jeder wie schon gesagt seinen eigenen Stil, ich persönlich benutze für Membervariablen immer ein 'm_' als Präfix.
-
Dann melde ich mich auch mal wieder zu Wort (als derjenige, der den Thread eröffnet hat...). Danke für die vielen Antworten.
So wie's aussieht, gibt's wohl keine einvernehmliche Lösung, oder? In den Sun Code Conventions steht auch nichts explizit über Parameter. Jetzt hab ich also drei Möglichkeiten zur Auswahl:
public void setAlter(int _alter) { alter = _alter; } public void setAlter(int alter) { this.alter = alter; } public void setAlter(int newAlter) { alter = newAlter; }
Hätten meine Variablen englische Namen, würde ich die 3. Variante bevorzugen. So sieht's aber blöd aus - und neuAlter natürlich auch ;). In den Sun Code Conventions steht, dass man auf _ bzw. $ in den Variablen-Namen verzichten sollte, also werd ich wohl auf Variante 2 umsatteln. Das scheint mir das gebräuchliste. Irgendwelche Einwände
Nächste Frage:
anzahlTage oder anzahl_tage
???
So wie's aussieht, eindeutig Variante 1, oder?
-
Komische Frage. Du hast doch grade erst Sun damit zitiert, dass man auf _ in Bezeichnern verzichten sollte
-
Eigentlich...
...hast Du Recht.
-
Tim99 schrieb:
Hätten meine Variablen englische Namen, würde ich die 3. Variante bevorzugen. So sieht's aber blöd aus - und neuAlter natürlich auch ;).
Jo. "setAlter" sieht aber genauso doof aus. Ich empfehle deshalb, für alle Bezeichner englische Namen zu verwenden.