Refactoring: Query Method

Temporay variables tend to be a code smell. They make methods longer and harder to reason about the method itself. Eventually they map logic, which itself is not necessarily important for the meaning at first. Further going refactoring steps (e.g. Extract Method) can be hindered by temporary variables.
Fir instance the class Person contains a public method adult?, determining if the person is an adult or not:

Extracting the temporary variable years_since_birthday into a dedicated method makes totally sense. The method adult? becomes more concise. Another benefit is the possible reuse of the method in different context:

However the Query Method approach should not be exercised at all costs. At least temporary variables make sense, if the their logic is applied multiple times in the same method and its repeated calculation would drive a performance loss.