Приведи пример нежелательных последствий при обращении к полям класса напрямую

«Приведи пример нежелательных последствий при обращении к полям класса напрямую» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Обращение к полям класса напрямую нарушает инкапсуляцию и может привести к:

  1. Невалидным состояниям – отсутствие контроля при изменении значений.
  2. Сложности рефакторинга – изменение поля требует правки всех мест, где оно используется.
  3. Проблемы с многопоточностью – отсутствие синхронизации при доступе.

Пример:

class User {
    var age: Int = 0 // Плохо: прямое изменение без валидации
}

// Где-то в коде:
user.age = -100 // Некорректное значение

Решение:

class User {
    private var _age: Int = 0
    var age: Int
        get() = _age
        set(value) {
            require(value >= 0) { "Age cannot be negative" }
            _age = value
        }
}

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