Как бы занимался рефакторингом модуля

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

Ответ

Рефакторинг модуля начинаю с анализа текущего кода:

  1. Выделяю ответственности - разбиваю на классы/функции по SRP
  2. Устраняю дублирование - выделяю общую логику в утилитные классы/extensions
  3. Упрощаю сложные конструкции - заменяю вложенные if/when на стратегии/стейт-машины
  4. Улучшаю читаемость:
    • осмысленные имена переменных/методов
    • вынося magic numbers/strings в константы
    • добавляю документацию для сложных мест

Пример рефакторинга:

// Было
fun process(data: String) {
    if (data.length > 10) {
        // 50 строк сложной логики
    }
}

// Стало
private const val MAX_INPUT_LENGTH = 10

fun processValidData(data: String) {
    require(data.length <= MAX_INPUT_LENGTH)
    // Разделенная на методы логика
}

Дополнительно:

  • Пишу тесты перед рефакторингом
  • Использую статический анализ (Detekt, Lint)
  • Делаю изменения небольшими коммитами