<p>One of my nasty (?) programming habits in C++ and Java is to always precede calls or accesses to members with a <code>this</code>. For example: <code>this.process(this.event)</code>.</p>

<p>A few of my students commented on this, and I'm wondering if I am teaching bad habits. </p>

<p>My rationale is:</p>

<ol>
<li>Makes code more readable — Easier to distinguish fields from local variables.</li>
<li>Makes it easier to distinguish standard calls from static calls (especially in Java)</li>
<li>Makes me remember that this call (unless the target is final) could end up on a different target, for example in an overriding version in a subclass.</li>
</ol>

<p>Obviously, this has zero impact on the compiled program, it's just readability. So am I making it more or less readable?</p>

<p>Note: I turned it into a CW since there really isn't a correct answer.</p>

I think it's less readable, especially in environments where fields are highlighted differently from local variables.  The only time I want to see "this" is when it is required, for example:
```
```
this.fieldName = fieldName
```
```
When assigning the field.
That said, if you need some way to differentiate fields for some reason, I prefer "this.fieldName" to other conventions, like "m_fieldName" or "_fieldName"