Антипаттерн "Передача кошки по частям"
Если у вас есть класс кошки
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();