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