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

Удаление сеттера.

Проблема

Значение поля должно быть установлено только в момент создания и больше никогда не меняться.

Решение

Удалите методы, устанавливающие значение этого поля.

##Пример

До
class Account {
  private String id;

  Account(String id) {
    setId(id);
  }
  void setId(String arg) {
    id = arg;
  }
}
После
class Account {
  private final String id;

  Account(String id) {
    this.id = id;
  }
}

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

Вы хотите сделать значение поля неизменяемым.

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

  1. Значение поля должно меняться только в конструкторе. Если конструктор не содержит параметра для установки значения, нужно его добавить.

  2. Найдите все вызовы сеттера.

    • Если вызов сеттера стоит сразу после вызова конструктора текущего класса, переместите его аргумент в вызов конструктора и удалите сеттер.

    • Вызовы сеттера в конструкторе замените на прямой доступ к полю.

  3. Удалите сеттер.