Ответ
Рефакторинг модуля начинаю с анализа текущего кода:
- Выделяю ответственности - разбиваю на классы/функции по SRP
- Устраняю дублирование - выделяю общую логику в утилитные классы/extensions
- Упрощаю сложные конструкции - заменяю вложенные if/when на стратегии/стейт-машины
- Улучшаю читаемость:
- осмысленные имена переменных/методов
- вынося 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)
- Делаю изменения небольшими коммитами