Die this Referenz

  • Themenstarter Themenstarter Tito
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Tito

Gast
Hallo,

ich hab einige Probleme beim verstehen der this Referenz hab mir grad http://www.galileocomputing.de/openbook/javainsel7/javainsel_06_001.htm#t2t34

durchgelesen, verstehe aber immer noch nicht alles. Z.B. bei dem Prog http://en.literateprograms.org/Complex_numbers_(Java)

gibt es zu beginn diesen Code

Code:
public Complex () {
    this.re = 0;
    this.im = 0;
  }

Warum werden denn im Defaultkonstruktor die Variablen mit "this" versehen? Nach meinem angelesenes Verständnis ist das nicht nötig, weil hier keine Objektvaraible verdeckt werden würde. Hätte also in dem Fall "re = 0" & "im = 0" gereicht?
 
entweder man macht es generell oder generell nicht und achtet dann auf prinzipiel unterschiedliche Parameternamen (z.B. mit einem festen Prefix)

extra zu schauen, ob Überdeckung stattfindet oder gar Vermischung a la

Code:
public Complex (double re) { 
    this.re = re; 
    im = 0; 
}
wäre doch schlecht
 
Zu dem Thema gibt es eine (für mich) zutreffende Meinung:

Guter Code ist selbstdokumentierend. Technisch ist this nicht nötig, aber dem menschlichen Leser hilft es.
 
Hiho,

ich verwende beides - Parameter mit Präfix UND this.

Code:
public void setX(int aX) {

  this.x = aX;
}

Das ist oft vielen zuviel Getippe, aber das Lesen wird zu einem Genuß! 🙂

bye Saxony
 
ich halte überhaupt nichts von Präfixen... wenns zu kompliziert wird, dass ich nicht mehr weiß, was ein attribut und was ein member ist, hab ich was falsch gemacht...

ich hab mir noch nie gefragt ob das jetzt ein member

und standard ist es auch nicht...
 
vielleicht sinnvoll bei ner methode die 200 zeilen lang is und diverse lokale variablen (nicht zwingend alle am Anfang) deklariert 😀 .. dann erhöhts die lesbarkeit ungemein
 
Ich sehe keinen Sinn darin Code zu erzeugen, der nicht notwendig ist. Es geht schließlich immer darum die Anweisungen mitzuteilen, die zum ordnungsgemäßem Laufen eines Programmes unabdingbar sind. Anweisungen die hinzugefügt werden, aber nicht nötig sind stellen höchstens eine Hürde zum Verständnis des Programmes dar, da man sich fragt: Wozu dient diese Anweisung?
 
diggaa1984 hat gesagt.:
vielleicht sinnvoll bei ner methode die 200 zeilen lang is und diverse lokale variablen (nicht zwingend alle am Anfang) deklariert 😀 .. dann erhöhts die lesbarkeit ungemein
Eine Methode mit 200 Zeilen gehört refactored, merkt man auch an Code in dem mittendrin Kommentare auftauchen.

Es geht schließlich immer darum die Anweisungen mitzuteilen, die zum ordnungsgemäßem Laufen eines Programmes unabdingbar sind.
Dann bräuchte man ja seine Variablen nur von a, b ,c ..x, y, z zu nennen und Methoden und Klassen auch, schliesslich läuft das ja genauso gut :roll:
Auch sind höheren Programmiersprachen dann überflüssig, schliesslich läuft opcode assembler auch "ordungsgemäß"... :roll:
 
@Tito

this. kannst du damit aber nicht meinen, this. ist doch kein Code, eher Benennung/ Formatierung/ Layout,
wenn du das für überflüssig hälst, dann vielleicht auch Aufruf statischer Methoden am Klassenname, Variablennamen mit mehr als zwei Buchstaben, allgemein Einrückung zur Lesbarkeit usw.?
 
Ob ich meine Variable Banane oder Apfel nenne ist kein Hinzufügen einer unnötigen Anweisung.
 
SlaterB hat gesagt.:
@Tito

this. kannst du damit aber nicht meinen, this. ist doch kein Code, eher Benennung/ Formatierung/ Layout,
wenn du das für überflüssig hälst, dann vielleicht auch Aufruf statischer Methoden am Klassenname, Variablennamen mit mehr als zwei Buchstaben, allgemein Einrückung zur Lesbarkeit usw.?

Mmmh... aber this. ist doch eine Anweisung... oder???
 
Tito hat gesagt.:
maki hat gesagt.:
this ist eine Referenz, keine Anweisung.
Schließt sich das aus? Weise ich mit "this.re" nicht an sich auf die Objektvariable zu beziehen?
ein einzelnes
Code:
;
ist schon eine gültige Anweisung,

this ist KEINE Anweisung, sondern eine Refernz, wie bereits gesagt 😉
 
Na gut, ob man es Anweisung nennt oder Referenz... entscheidend ist das this. die Funktion hat die Überdeckung der Objektvariable aufzuheben... (wenn man will kann man sagen "this. weist dazu an und es deshalb eine Anweisung nennen(das ist aber eher literarisch gemeint, wenn es im Programmierslang eindeutig keine Anweisung darstellt macht es keinen Sinn es so zu nennen))... Dieses funktionsträchtige Wort unnötiger Weise hinzuzufügen macht keinen Sinn.
 
Hast weder das eine noch das andere verstanden Tito 😉

Sinn ergibt alles, wodurch der Code für den Entwickler lesbarer wird, wann das der Fall ist, ist eine Einzelfallentscheidung.
Begriffe wie Referenz und Anweisung sind eindeutig definiert, da bringt es wenig wenn du mit deinen eigenen Definitionen ankommst.

'When I use a word,' Humpty Dumpty said, in a rather scornful tone,' it means just what I choose it to mean, neither more nor less.'
 
maki hat gesagt.:
Hast weder das eine noch das andere verstanden Tito 😉

Sinn ergibt alles, wodurch der Code für den Entwickler lesbarer wird, wann das der Fall ist, ist eine Einzelfallentscheidung.
Begriffe wie Referenz und Anweisung sind eindeutig definiert, da bringt es wenig wenn du mit deinen eigenen Definitionen ankommst.

'When I use a word,' Humpty Dumpty said, in a rather scornful tone,' it means just what I choose it to mean, neither more nor less.'

Ja, da hast du wohl recht... Danke jedenfalls für die Infos...
 
Tito hat gesagt.:
Schließt sich das aus? Weise ich mit "this.re" nicht an sich auf die Objektvariable zu beziehen?

Nein du weist nichts an du verwendest.
Anweisen wäre this = dasObjektHier. Hier weist du an, dass this dasObjektHier wäre - wenn es denn gehen würde...

Einfach so this nehmen ist Verwendung und keine Anweisung.

bye Saxony
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben