Рефакторинг методов с разными сигнатурами - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу очистить часть своего кода, который со временем стал слишком много копировать-вставить. У меня есть класс репозитория с несколькими методами, каждый из которых имеет разные сигнатуры, например:

fun first(a: Int, b: Int): Int {
    val result = 0
    val status = firstSpecificMethod(a, b)
    when (status) {
        "03" -> {
            processResult("03")
        }
        "04" -> {
            processResult("04")
            first(a, b)
        }
        else -> {
            //take some specific actions for this method
        }
    }
    return result
}

fun second(s: String): Boolean {
    val result = false
    val status = secondSpecificMethod(s)
    when (status) {
        "04" -> {
            processResult("04")
            second(s)
        }
        else -> {
            //take some specific actions for this method
        }
    }
    return result
}

Существует множество таких методов, некоторые из них должны обрабатывать каждый возможный код состояния, некоторые только несколько, но все они должны разберитесь с этими кодами, прежде чем идти вперед и возвращать их окончательный результат.

Теперь стало слишком уродливо смотреть на этот код, повторяемый каждый раз. Я думал, что смогу переместить эти методы в функциональные типы и заставить их наследовать суперкласс, который централизованно обрабатывает эти случаи, но, честно говоря, я не знаю, как управлять этими различными сигнатурами из такого класса.

Надеюсь Я ясно дал понять. Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...