Какие плюсы и минусы подхода с геттерами и сеттерами

«Какие плюсы и минусы подхода с геттерами и сеттерами» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Инкапсуляция: скрывают внутреннюю реализацию, позволяя менять её без изменения API
  • Валидация: сеттеры могут проверять данные перед записью
  • Логирование: удобно добавлять логирование изменений
  • Вычисляемые свойства: геттеры могут динамически вычислять значения
  • Совместимость: можно заменить обычные свойства на get/set без изменения кода, который их использует

Минусы:

  • Неожиданное поведение: вызов метода выглядит как обращение к свойству
  • Производительность: могут быть медленнее обычных свойств
  • Сложность отладки: стек вызовов становится менее очевидным
  • Избыточность: для простых случаев могут усложнять код
class User {
  constructor() {
    this._name = '';
  }

  get name() {
    return this._name.toUpperCase();
  }

  set name(value) {
    if (value.length < 2) throw new Error('Name too short');
    this._name = value;
  }
}