Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Сокрытие метода.

Проблема

Метод не используется другими классами либо используется только внутри своей иерархии классов.

Решение

Сделайте метод приватным или защищённым.

##Пример

До
public void setName(String arg) {
  name = arg;
}
После
private void setName(String arg) {
  name = arg;
}

##Зачем делать рефакторинг

Очень часто потребность в сокрытии методов получения и установки значений возникает в связи с разработкой более богатого интерфейса, предоставляющего дополнительное поведение. Особенно это проявляется в случае, когда вы начинали с класса в котором не было никаких методов, кроме геттеров и сеттеров.

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

##Преимущества

  • Сокрытие методов упрощает эволюционные изменения в вашем коде. Изменяя приватный метод, вам нужно будет заботиться только о том, чтобы не сломать текущий класс, так как этот метод не может быть использован где-то ещё.

  • Делая методы приватными, вы подчёркиваете важность публичного интерфейса класса, другими словами, тех методов, которые остались публичными.

##Как делать рефакторинг

  1. Регулярно делайте попытки найти методы, которые можно сделать приватными. Статический анализ кода и хорошее покрытие unit-тестами может очень помочь в этом.

  2. Делайте каждый метод настолько приватным, насколько это возможно.