Question: What is the "purist" or "correct" way to access an object's properties from within an object method that is not a getter/setter method?

```
String property = this.property;

```

or would you do:

```
String property = this.getProperty();

```

Answer: 
There is no correct way. It all depends on the circumstances:

* The main reason for using `this.property` is that it removes the need for getter and setter methods. This reduces code size, which is beneficial by itself since it reduces the overall costs of debugging and maintenance.
* The main reason for using `getProperty()` is that it lets you hide data structure refactoring from the rest of the code. For example, assume that you for some reason decide to move the `property` field to an embedded object `foo`. Then you can easily redefine `getProperty()` without affecting any other code:

`Object getProperty() { return foo.property; }`

If you are using frameworks like JPA you can also get performance benefits from using getters and setters, since the JPA framework can perform optimizations on these that are not possible otherwise.
use `this.property`

The property was defined there globally so presumably you should reference it directly throughout the class.

Unless...

The `getProperty()` method transforms the property somehow AND the only intended way to access this property is via that transformation.

Generally getters are there to access a property outside the class so they should really only be used in that context.