# Guter Programmierstil? this immerverwenden?



## usrr (6. Jul 2012)

Hallo,

kurz und knapp: Ich habe mal gehört es wäre ein guter Stil, wenn man bei globalen Variablen und Methoden immer das "this." voranstellt. Selbst dann, wenn es unnötig ist.

So, dass habe ich bisher immer gemacht. Allerdings zweifele ich an dem Sinn. Erstens macht es unnötig arbeit und zweitens macht es den Code schwerer zu lesen.

Kann es sein, dass mir da jemand Unsinn erzählt hat?

Grüße


----------



## tfa (6. Jul 2012)

Letztendlich ist das Geschmackssache. Wenn es dir nicht gefällt, lass es eben. Eine moderne GUI kann Member-Variablen (nicht globale) auch ohne "this" so hervorheben, dass man sie erkennt. Andererseits kann man die "this" auch automatisch an den passenden Stellen einfügen lassen, das erspart dann die Tipparbeit.


----------



## Empire Phoenix (6. Jul 2012)

Also ich habe eclipse be mir so eingestellt, dass es autoamtisch immer alle this, Classenname.variable ectl reinhaut. 

Vorteil, jemand der den code nicht kennt sieht auf anhieb sofort wohin er die variablezugriffe zuordnen soll. 
Eclipse macht das zwar auch mit Farben, aber ab und zu steht man mal auffem Schlauch, und ein this ist halt doch auffälliger


----------



## usrr (6. Jul 2012)

Kann man bei Eclipse die nicht nötigen this. evtl. per Shortcut hinzufügen bzw. entfernen?


----------



## Gregorrr (6. Jul 2012)

In Android hat sich ein Präfix m- etabliert, z.B.
	
	
	
	





```
int mMyVariable
```
, 
	
	
	
	





```
statt int myVariable
```
. Wenn man in Eclipse m drückt, dann gibt die Autovervollständigung schön alle Member-Variablen (m steht für Member) an.

Ich persönlich halte unnötige 
	
	
	
	





```
this
```
 für totalen Blödsinn (sorry). Es bläht unnötig den sowieso schon totalen Java Boilerplate auf. Ich sage ja auch nicht vor jedem Satz, den ich spreche jedes mal unnötig: "Jetzt spreche ich, ... Satz den ich sagen will....", sonder sage direkt den Satz den ich sagen will, ausser in den Fällen wo es zu Namenkollisionen kommen kann (bspw. bei vielen Leuten in einem Raum).

Wenn man 
	
	
	
	





```
this
```
 zum Lesen braucht, könnte es sein, dass der Code unnötig komplex ist und nicht gut strukturiert ist.


----------



## Tomate_Salat (6. Jul 2012)

usrr hat gesagt.:


> Kann man bei Eclipse die nicht nötigen this. evtl. per Shortcut hinzufügen bzw. entfernen?


Kann man sicher als Save-Action definieren.

Ich persönlich setze [c]this[/c] nur da wo es wirklich notwendig ist. Ein this als Markierung ist meiner Meinung nach nicht notwendig. Eclipse/Intellij IDEA (hab ich beide zufällig gerade offen) heben Membervariablen in einer anderen Farbe hervor. Zusätzlich erkennt man es auch im Outline.

---

Das [c]m[/c]Variable von Android finde ich aber auch suboptimal. Wenn ich mir einen einfachen Getter/Setter generiern lasse, kann ich den trotzdem nochmal anpassen.


----------



## bygones (6. Jul 2012)

Gregorrr hat gesagt.:


> In Android hat sich ein Präfix m- etabliert, z.B.
> 
> 
> 
> ...


halte ich fuer unnoetig. Allein durch das icon sieht man schon bei der Autovervoll. was instanzvariablen ist.

und was macht man wenn man noch einige Variablen wie "minute", "month", "mama", "mouse" oder was auch immer mit 'm' hat ?

man sollte keinen Code haben bei den an einer stelle 100 variablen rumschwirren, sodass die Autovervoll. zu gross wird.

ich habe this nur im Konstruktor, wenn ich mir die Parameter von Eclipse als Instanzvariablen hinzuweisen lassen.


----------



## vanny (6. Jul 2012)

ich mag mein *this*:bae:


----------



## maki (6. Jul 2012)

"m" Präfix.. *schauder*


----------



## usrr (6. Jul 2012)

Ich muss sagen, dass es mir eigentlich ganz gut geht, nachdem ich mich von diesem this.zwang befreit habe.


----------



## Fab1 (6. Jul 2012)

usrr hat gesagt.:


> Ich muss sagen, dass es mir eigentlich ganz gut geht, nachdem ich mich von diesem this.zwang befreit habe.



Na da hast du dich ja mal schnell angepasst, hat nicht mal einen Tag gedauert


----------



## mvitz (6. Jul 2012)

Tomate_Salat hat gesagt.:


> ...
> 
> ---
> 
> Das [c]m[/c]Variable von Android finde ich aber auch suboptimal. Wenn ich mir einen einfachen Getter/Setter generiern lasse, kann ich den trotzdem nochmal anpassen.



Ich finde diesen Präfix auch schrecklich, aber bezüglich getter/setter, da kann man in Eclipse auch Prefixe/Suffixe für Variablen bestimmen, die dann beim Getter/Setter explizit weggelassen werden.


----------



## usrr (7. Jul 2012)

Bei Eclipse gibt es im Source-Menü den Befehl "Clean Up ...". Damit kann man den Code schnell und bequem von unötigen this. befreien oder auch überall welche zufügen.


----------



## Ullenboom (7. Jul 2012)

Ich verwende es nicht, aus einem guten Grunde: Ein this macht mir explizit deutlich, dass es eine lokale Variable gibt, die vom Namen hier die Objektvariable überdeckt, siehe typisches Beispiel vom Getter:

public void setAge( int age )
{
  this.age = age;
}

Wenn ich this. sehe, erwarte ich einfach, dass es eine Überschattung gibt und ich würde mich wundern, wenn this. einfach "nur so" verwendet wird. Ich finde es wichtig, dass man durch solche Idiome etwas aussagt.


----------

