Насколько общей должна быть абстракция

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

Ответ

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

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

Пример:

// Слишком общая (плохо)
interface Processor<T> {
    fun process(data: T): T
}

// Оптимальная абстракция (хорошо)
interface ImageProcessor {
    fun applyFilter(image: Bitmap, filter: Filter): Bitmap
}