Guter Stil von Beginn an (this oder expliziete Parameter)

Mik3e

Erfahrenes Mitglied
Hi!

Vorweg: Ich arbeite mich gerade in Java ein. Nachdem ich aber schon seit sehr langer Zeit mit anderen (strukturierten) Programmiersprachen arbeite, weiß ich, dass es meist wichtig ist, einen guten Stil zu entwickeln. Und das wenn möglich von Beginn an (hat man einmal einen "schlampigen" Stil, kommt man da nur schwer raus) :)

Daher zu meiner Frage an erfahrene Leute:
Wenn ich Methoden für ein bestimmtes Objekt aufrufe, kann ich das Objekt ja explizit als Parameter definieren oder einfach in der Methode mit "this" zugreifen.

Variante A (Explizit):
Code:
public class TestProgramm {
     public static void main (String[] args) {
          Fahrzeug meinauto=new Fahrzeug();
          meinauto.setGewicht(meinauto,852);
     }
}

class Fahrzeug {
     private int gewicht=0;
     public void setGewicht(Fahrzeug fz, int gewicht) {
          fz.gewicht=gewicht;
     }
}

Variante B (Implizit / mit this):
Code:
public class TestProgramm {
     public static void main (String[] args) {
          Fahrzeug meinauto=new Fahrzeug();
          meinauto.setGewicht(852);
     }
}

class Fahrzeug {
     private int gewicht=0;
     public void setGewicht(int gewicht) {
          this.gewicht=gewicht;
     }
}
Welche der beiden Methoden ist besser? Ich könnte mir vorstellen, dass das Variante A bei einer komplexen Struktur der bessere Stil wäre (da mehr beschreiben). In diversen Tutorials habe ich sowohl die eine als auch die andere Variante gesehen.

Vielleicht könnt Ihr mir aus Erfahrung sagen, welche Variante die "besser" ist und ich von Beginn an durchziehen sollte. Möglicherweise ist es ja auch absolut egal und wirklich reine Geschmackssache (was ich nicht glaube).

Danke vorweg für Eure Tipps,
LG
Mike
 
Manchmal muss man this benutzen. z.b. bei übergabeparametern im Konstruktor :)

MFG
 
Ja, aber was ist prinzipiell gebräuchlicher (wenn ich jetzt von dem simplen Beispiel ohne Konstruktor, Vererbungen oder ähnliches ausgehe)?
 
Ich hab bis jetzt nur Variante B gesehen und denke auch, dass diese verwendet wird. Du hast ja die Referenz auf das erzeugte Fahrzeug schon und kannst mit setGewicht(35) auch auf dieses zugreifen und innerhalb dieser Methode dieses Gewicht setzen (mit this). Warum sollte es Sinn machen dieses Fahrzeug Objekt nochmal zu übergeben? this und fz referenzieren ein und das selbe Objekt.

Hoffe das stimmt auch was ich verzapft habe.

Gruß

Romsl
 
Noch Ergänzung zu meinem Post:

Mit dem this greifst du auf die globale Variable zu und ohne auf die der Methode. Wenn du 2 Variablen hast die den gleichen Namen haben musst du das so machen.

MFG
 
Das es technisch (vermutlich) belanglos ist, glaube ich auch (außer vielleicht performancemäßig). Ich wüßte halt gern, ob die "lange" (explizite) schreibweise vorteile bei der übersichtlichkeit bringt, wenn es Klassen gibt, die massig mit Methoden bestückt sind. Denn durch die Übergabe des Objekts beschreibt man die Methode ja noch etwas genauer...
 
Zu Zerix:
Das ist aber nur dann der Fall, wenn ich in der Methode noch eine Lokale Variable initialisiere, die (dummerweise) den selben namen wie die übergebene Instanz hat, oder?

Sorry, wenn ich hier vielleicht schwachsinn schreibe, aber wie gesagt arbeite ich mich gerade erst ein...
 
Du kannst das this bei jeder globalen Variable davor schreiben, aber du musst es nur tun, wenn sie wirklich den gleichen namen haben.
 
Hallo!

Das ist aber nur dann der Fall, wenn ich in der Methode noch eine Lokale Variable initialisiere, die (dummerweise) den selben namen wie die übergebene Instanz hat, oder?
Wenn man deine Aussage etwas umformuliert... ( wenn ich in dieser Methode eine Instanzvariable initialisiere die den selben Namen hat wie der dazugehörige Methodenparameter...)

... Ja. ob dass nur "Dummerweise" so ist hast du gesagt. Ich denke das dies Code ingesamt lesbarer macht...

Gruß Tom
 
Was meinst du mit "Denn durch die Übergabe des Objekts beschreibt man die Methode ja noch etwas genauer..."?
 

Neue Beiträge

Zurück