Антипаттерн "Передача кошки по частям"

Если у вас есть класс кошки

class Cat {
    int age = 3;
    int incrementAge(int a) {
        a = a + 1; 
        return a;
    }
}

И вы из другого класса увеличиваете возраст кошки следующим образом:

Cat cat = new Cat();
cat.age = cat.incrementAge(cat.age);

то вы делаете лишнюю работу.

Дело в том, что для всех методов класса поля класса по определению доступны, поэтому не нужно из кошки доставать значение поля, чтобы передать его в метод.

Метод УЖЕ имеет доступ к этому полю просто по названию.

То есть age уже доступен из метода incrementAge

Для этого перепишем метод incrementAge так:

class Cat {
    int age = 3;
    void incrementAge() {
        age = age + 1;        
    }
}

То есть мы убрали параметр метода int a.

И заменили возвращение значения int на void – ведь нам не нужно ничего возвращать, метод напрямую поменяет поле класса (и поэтому убрали и строчку return a;).

Теперь вот эту длинную строчку cat.age = cat.incrementAge(cat.age);

мы заменим на лаконичное cat.incrementAge();

ОК! ИДЕМ ДАЛЬШЕ!